自我反省
- 一些基础知识由于种种原因,或因少用,或因打法不规范,只是同一类问题无法快速解决,也就是不能完全理解一类算法。
- 调试时修改范围大小,在上交时没有改回,丢掉大量分数。
- 开范围的时候总是刚刚好就够了,偶尔会出现一点点的溢出,然后就runtime error。
- 对于复杂度分析不够仔细,有些优化后的时间难以估计,就放弃了可能能拿高分的做法。
- 随随便便就想用链表解决一些问题,还不太会出一些能够调出越界之类问题的数据。
- 类型经常爆掉,特别是坑爹的51Nod
(很尴尬的耶) - 在某些评测机或OJ上可能会爆掉栈,但是在本机上测不出来,在比赛中很容易挂掉。
- 比赛的时候嫌对拍太麻烦太复杂,然后选择自信回头,最后往往爆零。
- 评测机上的排序默认顺序会与本机有一些出入,可能导致答案错误。
- 打分段的时候超过理论可得分的区间就不运行程序。
改进措施
- 争取早日补全所有学过算法的标准,在遇到困难时不要投机取巧,要正视困难,争取做到最标准的做法。
- 对于修改的部分,最好打上如大括号等有颜色的标记,提交前,检查一下具有这些标记的地方。
- 开数组的时候范围多开几个,既不会太过于影响所占用内存又能在一定程度上防止溢出。
- 出一些极限数据,统计运行次数,对此重新估计复杂度。
- 不要随便用链表,尽量用模拟链表来代替。实在非用不可,一定要想全面。
- 一定要计算好max值,防止爆掉类型。
- 计算好理论需要栈的层数会不会在评测时,不要太相信自己机子上的结果(特别是Pascal选手要注意,Pascal的内置栈鬼死那么大)。
- 一定要对拍,一定要对拍,一定要对拍(重要的事情说三遍)。无论多麻烦,一定要打,说不定那次没对拍就刚好错了。
- 不嫌麻烦打好多关键字排序。
- 实在不会打的时候,选一段感觉能够坑到分的方法来应付超出范围的数据。