STL
众所周知 STL 不仅常数很大,而且使用不当还会 RE。
- vector 两种遍历方式
for(int x:v)
和for(int i=0;i<(int)v.size();i++)
,如果在for
循环中往v
放东西了,那么后者会遍历刚放进去的东西,而前者不会。 - 访问 vector resize 的空间,如果这个空间没有提前被赋值,那么访问里面的值可能会 RE,而 vector end 返回的迭代器是这个 vector 里面的最后一个元素(考虑 resize 出来的)的下一个位置所对应的迭代器。
- 定长数组 array 可以用 map 进行映射,array 重载了
[]
和小于号,其中比较大小依靠类似于字典序,从 \(0\) 往大来进行比较。 - 注意如果往 \(set\) 或者 \(map\) 里面塞结构体,注意两个不同结构体之前一定有明确的大小关系,否则就会出现有的结构体消失的问题。
- string 类型要注意,在某个位置未分配空间前,不要用
[]
来使用某个位置,否则会 RE。
调试
- 递归调试完后如果有限定层数的语句,一定要记得删除。
常数
- 轻重链剖分在某些情况下可以比倍增快很多。
细节
- 注意树状数组运用的时候要保证询问或者修改的区间左端点大于 \(0\),否则要手动加 \(1\)。
- 统计答案的变量不要开在递归外面,开在递归里面。
- dinic 当前弧优化位置注意:链接
检查
- 检查线段树标记是否下传,是否清零,是否打上。