博主今天因为
debug
\text{debug}
debug的事被教训骂了所以记录一下在
debug
\text{debug}
debug的过程中都发现了什么智障错误
- 取
Mod
\text{Mod}
Mod的时候注意输入也可能超出范围,最好在输入的时候取一下模。
对于某些sb题请在读入优化那个函数里也取模(NOIP2014解方程) - 取模最好用函数操作进行 + − ∗ / +-*/ +−∗/之类的,要不然代码又长又容易写晕还容易取漏
- 过样例了不要太激动,养成造极限数据手玩的好习惯
- 对于 N N N大小不一样的数组注意 N < < 1 , N ∗ N N<<1,N*N N<<1,N∗N之类的开数组大小,避免 R E RE RE
- 如果对于一个数据有不同的操作请注意数据类型是否相同,不要 i n t int int去做 l o n g l o n g long\ long long long的运算
- 对于一些可能会比较难写的方法先在纸上写出思路再写代码,如果对于一个相同算法有不同实现请一定选择简单的那个实现
- 看到复杂度为 O ( n ) O(n) O(n)的可以考虑猜结论或者单调队列转移,用单调队列的时候至少要看看决策是不是单调的(就算没有严谨证明也得想清楚, t h i n k t w i c e , c o d e o n c e think\ twice,code\ once think twice,code once),单调队列没调出来的时候考虑队头队尾的性质,想想队列此时能不能弹空
- 对于代码要写很久(比如高精),但是分很少的情况,就先不要写了,先把其他更好拿的分拿到再写这些
- 一定要考虑清楚对于一个矩阵它哪个是行哪个是列(暴力写挂的悲惨命运)
- 多组数据记得清空
- 遇到题意不清楚的情况先把所有情况都写了
- 遇到 D P DP DP先不要考虑维数,大胆假设一下
- d i j k s t r a dijkstra dijkstra标记是否访问过是在队列里取队头时标记,不是一开始进队的时候就标记,它是看队头全局最小值有没有更新其他值
- 要取 m i n m a x min\ max min max的时候注意初值,可能会初值赋的不好导致错误
- 最小生成树添加的边是无向边也不要 a d d add add两次,会爆零
- m e m s e t memset memset不能对 d o u b l e double double类型赋最大值(最好不要, W A WA WA过),建议直接 f o r for for
- 判断单调队列当前元素是否还符合条件时要根据题目定义(比如当前下标已经不满足题目区间了),不能简单用 l r l\ r l r判断