最近发现打暴力(还有梦想中的正解)都会打错,决定好好总结一下各类坑比错误QAQ数组
- 必定要好好看数据范围,接近
int
类型上限,若是要求和,必定要开long long
而且改大你的inf
值(TAT暴力分流失)
- 提交以前,好好看看你的输出,有没有少或者多,而且检查格式错误。
- 对于后面的点,若是要混分的话,必定要注意数组的大小!!!(NOI2017同步赛和8.4的都少了10分QAQ)(NOI2018同步赛又少了 20 分,之后不要怂空间直接大力开数组就行啦)
- \(Floyd\)的循环必定要记得 \(*k\) 必定要在最外层!!!
- 必定要认真读题,看看是要输出第一个仍是要输出几个答案!!!
- 必定要多测几组数据,并且要反常规的数据!
- 必定要删掉调试信息,最后10分钟编译一下,测下样例!
- 拓扑排序必定要从入度为0的点进去!Tarjan缩点(强连通份量)必定是有向图!!
- 有时候实在想不到\(dp\)就去作贪心算了!
- 费用流建反向弧的时候必定要记住,费用为相反数,流量为0!
- \(Splay\)查找第\(k\)大的时候,必定要记得先减,在向下走,否则会减下面的!!!
- \(Splay\)查找第\(k\)大的时候,必定要记得先下放标签啊!!!各类没有先\(Splay\)的东西,都要\(push \ down\)啊!!!
- \(Treap\)删除的时候,递归下去,走的应该是
ch[u][d^1]
,本身被旋到另一个地方了!!(很容易错!)并且删除的时候,找到同样的值就return
!
- \(FFT\)蝴蝶变换那里,奇数项 \(\times x\)!!!
- 莫队带修的时候,必定要注意以前的
Old
状态!!!
LCT
中的rotate
判断!is_root(u)
以前必定不能链接u-v
的边,否则会判错,并且不是判!is_root(t)
!!!
- 线段树必定要记得
push_down
和 push_up
!!!
- 线段树中的
query
中的 res
注意看要不要开 long long
!!!
- 检查数组有没有越界的话必定不能开 \(O2\) 测一遍 开 \(O2\) 数组越界不会显示 \(RE\) 会显示 \(WA\) 开不开 \(O2\) 都试一遍!!!!
LCT
更改单点值时候 必定要记得把它放在根上 否则答案会错!!!!
- 关于几率中 , \(1 - p[i]\) 这个几率计算时候 不要写成 \(Mod - p[i]\) !!!
- 捆绑测试之类的题须要注意小数据状况!!!例如 \(n=1,2,3\) !!!
- 仔细思考全部可能爆
long long
or int
的地方!!(NOI2018 同步赛又丢了 \(15pts\))要算下全部中间结果大小!!!
- 函数传变量必定要传完,有时候在函数定义那预处理初值不是好习惯啊!!
- 强制在线的题必定要注意 \(ans\) 是否赋值!!!
- \(calm down\) 记得算空间和检查数组和变量越界以及多组数据!!!(次次模拟赛挂分)
- 多组数据记得清除先后缀和!!!!