Tricks

发布时间 2023-07-13 21:34:44作者: NuclearReactor

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 当前弧优化位置注意:链接

检查

  • 检查线段树标记是否下传,是否清零,是否打上。