- 空间开小或开爆
- 求和忘记开(long~long)
- 有些只在函数里用的STL就尽量开在函数里,容易忘记清空
- 数字之间异或的时候有可能会超过原本的值域范围
- 需要维护区间和的线段树中,凡是和线段树的点值有关的变量都要开(long~long)
- 在离散化的时候,不要把原序列长度和离散化之后的长度搞混
- 在二分的时候,如果当前已经能够确定是否满足条件,就要及时(return)
不然鬼晓得会爆成什么鬼样子 - 不要怀疑一些算法的必要性,不要总想着发明一些新的算法
- 注意仙人掌是缩点双,仙人球才是缩边双
- 注意看题要不要判无解
- 注意一定要仔细看清题再打
- (tarjan)的(vis)标记要打在处理询问之前
- 线段树合并的时候,忘记把(merge)函数的返回值赋给(rt[now])
- 不要开一些(vector)数量大于元素数量的多维(vector)
- 造极限数据的时候不要只生成刚好和极限一样的数据,试了一组极限数据之后要把(gen)改成在极限附近波动
- 记住一定要按(F12)
- 不要乱开什么容斥期望题
- 考试的时候去做难题的时候一定要先拿稳简单题的分(联赛再次吃亏)
- 方便打(gen)和细节多的题一定要拍,查细节错误可以小数据对拍
- 分块的时候不要忘了特殊处理操作在一个块内部的情况
- 有时候开多棵线段树的常数太大,可以把他们合成一颗线段树维护多个值
- 注意输入的序列长度是(n)还是(2 imes n)
- 注意考试结束之前要检查数据分治是否正确
- 注意循环变量不要重复
- 注意多组数据要检查是否清空
- 一定要注意模数
- 在测试部分分的时候,要把暴力去掉
- 在对(long~long)取模的时候,要先模再加再模
- 在使用(string)类的时候,要注意操作位置的范围,防止(MLE)
- 注意有多组数据测试的时候,数组尽量都清空,不然有可能会出现什么奇奇怪怪的错误
- 注意保证(sum)的题,每次只要清空到当前的范围就可以,不然有可能会T
- 注意小数据是否要特判
- 注意(floyd)对于重边要(chkmin)
- 一定要注意给的图是有向图还是无向图
- __builtin_ctz最好写成
(x ? __builtin_ctz(x) : 32)
,不然可能会出事