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