【置顶】错因总结

· · 个人记录

图论区

  1. 倍增的时候 1<<i 打成 i<<i
  2. uv 打错。
  3. 拓扑排序开始要把入度为零的点全部入队。
  4. 启发式合并修改操作的顺序。
  5. 并查集初始化。
  6. dinic 别忘加剪枝捏。

数据结构区

  1. 树状数组零下标问题出错。
  2. 树状数组忘记初始化。
  3. 单调队列第一维相同第二维不能忘记排序。
  4. 单调队列不仅要考虑元素的保质期,也要考虑元素的生产日期,选择合适的入队时间。
  5. 线段树写挂。build(rs,l,mid);build(ls,mid+1,r)
  6. set 这种东西 erase(it) 之后就不能继续用 ++it,正确的写法为 it=st.erase(it)
  7. 莫队要先加后减(2023.8.4)

数学区

  1. 在时限卡的不仅的情况下一律 define int long long
  2. 负数取模问题。
  3. define int long long 后也要把 1 改成 1ll
  4. double 精度回寄,要用 long double。(2023 春测 T2)
  5. 一些数学函数在 long double 范围内可能会寄。
  6. x^y 的时候要是太大了就直接返回,实现可能会用到 __int128
  7. 看好保留小数点后多少位(ARC 158 B)。
  8. sqrt 精度较低(ABC 243 G)。

字符串区

  1. .size() 返回的类型是 unsigned,直接比较可能会出错。

其他

  1. 多测不清空。
  2. 多测清空不彻底。
  3. endl 慢的离谱,导致 TLE。
  4. 预处理少了。
  5. 变量重名。
  6. 没输入就调用变量。
  7. memset(f,0,sizeof(0));/oh
  8. ij打错。
  9. 数组开小。