警钟长鸣

比赛相关

  • (USACO 要看清比赛窗口的结束时间,在倒计时小于比赛时长前就开始比赛。不然可能还没比完就被强制结束)
  • 不要认为大样例过了就是过了
  • 务必用比赛提供的编译选项编译(尤其是 C++ 的版本要保持一致)

基础

  • STL
    • std::pair 时,分清哪个是键哪个是值;手写时 operator< 里比较哪个要看清楚
    • 用迭代器遍历容器时,如果需要修改,要使用引用
    • .empty().clear() 要分清楚
  • __lg(x) 返回值是二进制表达的最高位,向上取最近的 2 的幂应用 2 << __lg(x - 1)
  • /% 向 0 取整((a % b + b) % b 为向下取整的余数),>> 向下取整

动态规划

  • 式子要多推几遍
    • 还要检查答案的统计
  • WQS 二分
    • 由于是 lower_bound,所以要尽量多取作为区间上界

字符串

  • AC 自动机
    • fail 树建儿子列表时,0 的儿子不要漏了

组合数学

  • 组合数要特判 \(m < 0\)\(m > n\)

数据结构

  • 线段树
    • \(4\) 倍空间
    • 清空时不要只在叶子上清
    • pushdown 时不用判叶子(叶子永远不会 pushdown),更不要判成查询(修改)区间长度为 1
  • 李超线段树
    • 区间要开成闭区间
  • 无旋 Treap
    • split 后一定要 merge 回去
    • merge 时返回值要赋到 rt
  • 可持久化平衡树
    • 不要像普通无旋 Treap 一样用结点总数表示新结点,因为 splitmerge 时随时会新增结点
    • split 后如果没有修改,就不用再 merge 回去了)

图论

  • 欧拉图
    • 要判自环
  • 欧拉序求 LCA
    • 注意别写成括号序

杂项

  • 把复制粘贴递归函数时记得更改调用的函数名
  • 注意变量及函数返回值的类型是否正确,是否发生未预期的强转
  • 认真分析答案及中间结果的大小(例如不要看见爆 int 就开 long long,有时需要 __int128 才行)
posted @ 2023-04-26 20:51  Dinshey  阅读(79)  评论(0)    收藏  举报