ACM易犯或曾犯过的低级错误+注意事项

  1. 变量名一定要谨慎,尽量见名知意;不显然的变量名就是给自己增加记忆需求,等同于给自己增加编码难度。首先是因为我们需要思考变量的含义,这会影响编码速度;更糟糕的是,很容易引起编码bug。例如,记忆混乱用错变量;或者由于变量太相似,手误敲错;这些错误都很难排除。不要贪图手速而放弃使用好的变量名,这很有可能得不偿失。

  2. 再三确认数据范围,内存允许的情况下,整型直接用long long, 浮点型直接用double;

  3. 内存允许下,数组可以开大点,千万不要开到刚刚好。

  4. 考虑是可能爆longlong,如果可能,是否能用int128?不能的话直接上大数。

  5. 变量记得初始化,尤其是对于会重复使用的变量;

  6. 循环语句尽量用大括号

  7. 提交之前运行一遍,确定没有编译错误以及不符合格式的输出

  8. 阅读完题目之后应该把要点列出来,尤其是一些约束条件,输出条件,提前交前将程序与要点相比较,检查是否有漏误。

  9. 检查函数传入的实参是否有误

  10. 大输入输出用scanf printf,或者加上std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0),然后只用cin,cout,用‘\n’代替endl;

  11. 多个全局变量初始化可以写成函数;变量的初始化要清晰,不要隐蔽;再三确认是否每个变量都已经初始化

  12. 做题顺序:思路得到越多人确定的题优先级越大;
    对于猜想题,代码量小可以先试,代码量越长优先级越低;
    模拟题在电脑空闲时敲

  13. 考虑边界值的特例情况

  14. 并查集记得路径压缩

  15. 符号重载,排序方法的重写要仔细

  16. 对于复制粘贴的代码段,仔细校对是否需要更改的都更改了

  17. for循环的索引变量一定要仔细检查,尤其是i和j不要混用。for循环里面的变量声明也要注意,不要和索引变量相同。

  18. 排序顺序要注意。

  19. 对于推理出来的公式需要再三验证,如果可以不用公式,有更加稳健的办法,可以两者都写一下,然后对比答案。

  20. 不要写strcat(str,str);不能自己接自己。

  21. 涉及字符集的算法一定要仔细读题,比如字典树,AC自动机

  22. 用容器删除元素时,要确保元素在容器中是存在的,否者会删掉容器的end(),引起程序超时。

  23. 如果要写if(x>0),不要用if(x)替代,不然要是x为负数就完了

  24. 对于统计路径数的搜索,退出终点时应该讲终点置为未访问

  25. 优先队列是默认从大到小排序的,需要重载运算符时一定要注意。

  26. 写dfs向下一层传参时避免修改当前层的参数时,如,不要把dfs(dep+1),写成dfs(++dep)。

  27. 创建程序文件时一定要按照题号来,保证程序写到对应文件中。

  28. 不管程序简单与否,应该多照样例,仔细检查代码,不要存在侥幸心理或者过于自信。
    补充:
    1.编代码的时候至少要两人都清楚思路并且能查错;
    2.多组数据测试的例子至少要编两个;
    3.把没把握清楚的题的模板打印出来;
    4.早点休息;
    5.一道题半小时,一点没思路,过;
    6.先写伪代码;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值