-
变量名一定要谨慎,尽量见名知意;不显然的变量名就是给自己增加记忆需求,等同于给自己增加编码难度。首先是因为我们需要思考变量的含义,这会影响编码速度;更糟糕的是,很容易引起编码bug。例如,记忆混乱用错变量;或者由于变量太相似,手误敲错;这些错误都很难排除。不要贪图手速而放弃使用好的变量名,这很有可能得不偿失。
-
再三确认数据范围,内存允许的情况下,整型直接用long long, 浮点型直接用double;
-
内存允许下,数组可以开大点,千万不要开到刚刚好。
-
考虑是可能爆longlong,如果可能,是否能用int128?不能的话直接上大数。
-
变量记得初始化,尤其是对于会重复使用的变量;
-
循环语句尽量用大括号
-
提交之前运行一遍,确定没有编译错误以及不符合格式的输出
-
阅读完题目之后应该把要点列出来,尤其是一些约束条件,输出条件,提前交前将程序与要点相比较,检查是否有漏误。
-
检查函数传入的实参是否有误
-
大输入输出用scanf printf,或者加上std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0),然后只用cin,cout,用‘\n’代替endl;
-
多个全局变量初始化可以写成函数;变量的初始化要清晰,不要隐蔽;再三确认是否每个变量都已经初始化
-
做题顺序:思路得到越多人确定的题优先级越大;
对于猜想题,代码量小可以先试,代码量越长优先级越低;
模拟题在电脑空闲时敲 -
考虑边界值的特例情况
-
并查集记得路径压缩
-
符号重载,排序方法的重写要仔细
-
对于复制粘贴的代码段,仔细校对是否需要更改的都更改了
-
for循环的索引变量一定要仔细检查,尤其是i和j不要混用。for循环里面的变量声明也要注意,不要和索引变量相同。
-
排序顺序要注意。
-
对于推理出来的公式需要再三验证,如果可以不用公式,有更加稳健的办法,可以两者都写一下,然后对比答案。
-
不要写strcat(str,str);不能自己接自己。
-
涉及字符集的算法一定要仔细读题,比如字典树,AC自动机
-
用容器删除元素时,要确保元素在容器中是存在的,否者会删掉容器的end(),引起程序超时。
-
如果要写if(x>0),不要用if(x)替代,不然要是x为负数就完了
-
对于统计路径数的搜索,退出终点时应该讲终点置为未访问
-
优先队列是默认从大到小排序的,需要重载运算符时一定要注意。
-
写dfs向下一层传参时避免修改当前层的参数时,如,不要把dfs(dep+1),写成dfs(++dep)。
-
创建程序文件时一定要按照题号来,保证程序写到对应文件中。
-
不管程序简单与否,应该多照样例,仔细检查代码,不要存在侥幸心理或者过于自信。
补充:
1.编代码的时候至少要两人都清楚思路并且能查错;
2.多组数据测试的例子至少要编两个;
3.把没把握清楚的题的模板打印出来;
4.早点休息;
5.一道题半小时,一点没思路,过;
6.先写伪代码;
ACM易犯或曾犯过的低级错误+注意事项
于 2019-12-05 11:37:03 首次发布