易错点/易炸区

  • !a \(\Leftrightarrow\) a==0 , a \(\Leftrightarrow\) a!=0

  • memset 只能对数组的一维赋值

  • sort 函数默认升序排列,即 \(x<y\)

  • INF 设到足够大,但也别大到 0x7fffffff

  • 记得时刻取模,有减法时记得先 +mod%mod ,如果有必要需要读入后立即取模

  • 不要盲目取模,尤其是计算过程中胡乱取模会影响正确性,算完后最后结果可以取模

  • 注意模数性质,是否为质数,数清楚有多少位,不要想当然

  • 在需要取模的快速幂中,如果最后的结果为 \(0\) 记得加上一个 mod,否则会出错

  • 重载运算符时要注意,this.a<t.a 才是从小到大

  • 指数不能直接取模

  • 树剖时记得分清楚第 \(i\) 个原数权值(w),和按dfn顺序的权值(nw

  • 线段树updatepushuppushdown时,不能仅更新 \(sum\),应该更新全部信息,如min、max

  • 在 splay 的标记下传过程中,一定要先判断左右儿子是否存在,再对其翻转标记xor 1

  • Floyd算法枚举顺序: k,i,j

  • 线段树开 \(4\) 倍空间

  • 线段树pushdown时记得特判是否为叶子

  • DFS 是树根的父亲尽量不要设成 \(−1\),因为 \(fa_{root}\) 可能会在 LCA 中用到导致 RE

  • 树状数组记得特判 \(0\) 的情况

  • 分块时,最后块后面还要加一个右端点为 \(n+1\) 的块

  • \(n,m\) 的范围不代表数据范围

  • 不要随便用 SPFA,看清题目要求,是否有负边权,是否是双向边,是否稠密或稀疏

  • 存图时记得初始化 memset(h,-1,sizeof(h))

  • 尽量不用unordered_map,易被卡 ywy_c_asm的故事

  • 矩阵乘法循环顺序: i,k,j 或者 k,i,j

  • 命名时避开 \(y2\) 等系统关键字

  • 考试的时候看清编译语言是 c++ 还是 c++11

  • \(int\) 类型的函数要有返回值

  • 不要访问负下标

  • 编译选项开-Wall有助于避免 UB

  • 在遇到和逆元有关的题目时(比如求概率或期望),可以写一份转成 double 的副本,可以提高调试效率

  • 写了 init 就要初始化,别忘了用

  • 模数为 \(0\) 或者除数为 \(0\) 都可能导致 RE

  • 考试开始时先看完所有题,先做可做的,做题策略要正确

posted @ 2021-07-20 20:08  BFNewdawn  阅读(46)  评论(0编辑  收藏  举报