常见错误

1.初始化最好在输入后面,因为有的会初始化为输入进去的值

2.dp初始化,结果是否就是一个值,循环中减1是否溢出

3.const一个常量时注意常量的类型,double不能写成int

4.输入时注意输入值的类型,不能把%lf写成%d

**5.变量++搞不清楚是最好不要放在一句话里面,特别是这个变量在这句话中出现两次的时候**

**6.线段树容易RE,注意左端点是否大于右端点**

7.!check[v]写成了check[v]

8.注意括号,!后面一定要加括号

9.分解质因数要判断最后剩下的是不是质数

10.乘法有可能溢出,要加强制转换,如果会爆long long的话要加快速乘

11.调用函数时没有把函数值赋给变量

12.拓扑排序时入度没有减

13.bool类型的函数返回值如果不是1必须要返回0

14.系统栈空间溢出也会导致RE,所以尽量不要在一个函数里定义变量

15.单调队列注意队列是否为空,最好入队和出队时都判断,不然容易RE

16.判断相等时一定要注意是==,不是=

17.计算概率的时候最好写除法,因为先乘有可能会超出int范围

18.写深搜的时候要记得往下搜

**19.有返回值的函数一定要记得返回值,特别是动态开点线段树的insert函数和merge函数**

20.注意上面的赋值对下面判断的影响,比如上面先赋值check[v]=1,下面再判断就会出错,总的来说就是注意几个语句执行的先后顺序

21.有时优读也会写错,记得检查,所以最好一开始不加优读

22.一定要注意答案是!=INF还是<INF,输出无解最好特判

23.Dijkstra堆优化不能将起点的check赋为1,要不然就会直接回去

**24.重载运算符后面一定要写const**

**25.全局变量不能在局部重新定义,要不然会在别的函数里变成0,变量尽量不要定义重名**

26.要看清题目要求,点对(u,v)算一对还是两对,(u,u)算不算

**27.有的递归函数里必须定义局部变量,保证在递归是变量的值不会变**

28.分块时记得特判是否在一个块里

29.欧拉序求LCA时最好就算到dfs_clock,因为有时不一定是n*2,详情见洛谷P2783 有机化学之神偶尔会做作弊,因为这题不是一个标准的树,可能会有重边和自环

30.search是关键字,最好不要用,用了也要大写

31.数位dp记录和返回值不能合起来写

32.无输出有可能是死循环,递归很容易发生死循环

33.洛谷上的RemoteJudge很有可能有点小问题,特别是输入很奇怪的时候,注意先保证输入是正确的再调试

34.网络流题目一定要注意边的数组大小问题,经常不是原本边个数的两倍

35.注意求LIS时,a[0]一定要是-INF,因为输入有可能有负数,或者直接特判

36.const INF时注意INF的类型,long long不要忘了

37.gcd一定要特判0的情况

38.函数里面调用的参数最好先用一个变量存下来,不要直接read(),似乎有点问题

39.后缀自动机return之前一定要把las更新为np

40.树链剖分记录dfs序一定要在dfs2中,保证重链上的编号连续

41.SAM上在写第k小子串时一定要记得判断有没有被访问过

**42.内外层循环的变量名一定不能相同,注意检查是否都写成i**

**43.注意图不是树,边数不是N<<1**

**44.CDQ分治cmp函数一定要在第一维相同时按照第二维排序,依此类推,注意while里面是||**

45.位运算也会爆int,要强制转换

46.网络流中,S和T要检查是否和别的节点编号重复

**47.线段树注意(l+r)>>1时l+r会不会爆int**

48.斜率优化移项时注意不等号方向的改变

49.if和else后加多个语句时最好都加上大括号

50.线性基插入后一定要退出

51.递归时注意全局变量和局部变量的区别,还有是先向下dfs再更新,还是先更新再向下dfs

52.size在C++17中是关键字,最好大写或用siz

原文地址:https://www.cnblogs.com/fluttersunny/p/9252142.html