OI 中的常见错误
比赛相关
- (USACO 要看清比赛窗口的结束时间,在倒计时小于比赛时长前就开始比赛。不然可能还没比完就被强制结束)
- 不要认为大样例过了就是过了
- 务必用比赛提供的编译选项编译(尤其是
C++
的版本要保持一致)
基础
- STL
- 用
std::pair
时,分清哪个是键哪个是值;手写时 operator<
里比较哪个要看清楚
- 用迭代器遍历容器时,如果需要修改,要使用引用
.empty()
与 .clear()
要分清楚
__lg(x)
返回值是二进制表达的最高位,向上取最近的 2 的幂应用 2 << __lg(x - 1)
/
和 %
向 0 取整((a % b + b) % b
为向下取整的余数),>>
向下取整
动态规划
- 式子要多推几遍
- WQS 二分
- 由于是
lower_bound
,所以要尽量多取作为区间上界
字符串
组合数学
- 组合数要特判 \(m < 0\) 或 \(m > n\)
数据结构
- 线段树
- 开 \(4\) 倍空间
- 清空时不要只在叶子上清
pushdown
时不用判叶子(叶子永远不会 pushdown
),更不要判成查询(修改)区间长度为 1
- 李超线段树
- 无旋 Treap
split
后一定要 merge
回去
merge
时返回值要赋到 rt
- 可持久化平衡树
- 不要像普通无旋 Treap 一样用结点总数表示新结点,因为
split
或 merge
时随时会新增结点
- (
split
后如果没有修改,就不用再 merge
回去了)
图论
杂项
- 把复制粘贴递归函数时记得更改调用的函数名
- 注意变量及函数返回值的类型是否正确,是否发生未预期的强转
- 认真分析答案及中间结果的大小(例如不要看见爆
int
就开 long long
,有时需要 __int128
才行)
posted @
2023-04-26 20:51
Dinshey
阅读(
79)
评论()
收藏
举报