一些坑点
填坑中
last update : Jan,21st,2019
通用
-1.仔细审题*2
0.永远要有想法,不要觉得复杂度不对空间就不开够。空间永远开到最大值(或者说是自己不MLE的极限),以免发生复杂度正确但是空间没有开够的惨痛教训(NOI.ac WHZZT 邀请赛R1)
1.在会爆int的题目中,一定要仔细检查是否有会爆int的中间变量写了int。 (from NNEZ_R2_T1)
2.使用-=时,把-=后面的东西用括号括起来,防止可能出现的负负为正等SB错误 (from Luogu P1270)
3.在需要mod一个数的题目中,要检查输出(printf)时有没有做计算,如果有计算,要括起来再mod一次(Luogu P2679)
4.使用迭代器时,不要在if中++或--,以免出现奇奇怪怪的顺序问题。 (Luogu P3626)
5.二分答案/二分时,不要瞎JB对左端点和右端点优化,直接取题面的最大值和最小值就好,防止因端点取错而爆炸(from NNEZ_R2_T3)
DP
1.在初始化不是0(0作为极值的情况下),一定要讨论可以取得到的边界条件,否则会听取WA声一片。 (Luogu P1437)
2.一定要仔细检查答案应该取哪个状态。 ([HAOI2008]木棍分割)
数论
1.使用exgcd时,记得检查x,y变量前是否加上了&。 (Luogu P1516)
2.计算lcm时,先除gcd再乘,以防乘爆 (Luogu P4777)
3.线性求欧拉函数和莫比乌斯函数时,要注意初始化phi[1]=1或miu[1]=1
4.写FFT时,记得加上对type的判断,若type=true,则x0=conj(x0);
计算几何
1,求凸包的时候要对x,y都排序,且要去重,在一条直线上也要弹栈(防止全部全在一条直线上的数据)。否则将会在用凸包求其他东西的时候出现奇奇怪怪的问题。
2.旋转卡壳一定要特判n==2的情况。
数据结构
1.并查集中在求需要父亲的地方,请直接调用函数,而不要相信你路径压缩过的fa[x],直接调用的话有可能因为各种各样奇怪的原因导致你取到的不是最终父亲。(from Luogu P2170)
2.线段树pushdown的时候记得特判叶子节点的情况,否则会RE到飞起 (NOI2015 软件包管理器)
3.圆方树一定要开2倍空间(来存额外的方点) ([BeiJing2013]压力)
4.小心线段树的常数 (NNEZ noip2018R2 T1)