如何提高ACM竞赛编写代码的速度

(摘自上海交大bbs)
Loirey (落英) 于 2008年06月26日23:40:42 星期四)
提到:

奋是基础,一切的前提
奋之上是忍耐
大部分时候大部分人的“习惯”都是跟“效率”作对的
奋让你有机会去跟这些习惯做斗争

在 ACM 竞赛的级别,写代码不是在解题,而是实现早已在脑子里准备好的一个逻辑流程。
这个追求跟大部分没有训练过的人的习惯相反,要扭转这种习惯,第一步可以做尝试有:

1. 把准备和敲键盘分割为两个动作。
2. 把敲键盘和运行分割为两个动作。
3. 编译错误这件事情几乎总是会发生,但“尝试”减少编译错误的过程,确实对提高准备
效率很有帮助帮助。

写程序的 准备->写代码->测试 三阶段,普通人之间差距最小的就是第二个阶段。速度都
是在“短到完全不充分或者长得非常没建设性”的准备期,以及“没完没了地冒出计划外
BUG 或者遭受囧到不行的 Debug 灾难”的测试期,被拖慢下来的。

如果你是队里的队员,那么以下几点是必须做到的:

1. 敲键盘中的任何时候,如果发呆超过三分钟,说明没准备好,滚下机器去想清楚。
2. 编译器告诉你某个变量没声明,结果你突然发现不知道应该在哪里声明它。这时候同样
说明准备没做好(根本就是对象和逻辑都是乱的),滚下机器去想清楚。
3. 为 ACM 竞赛而写的代码,不需要 DEBUG 模式。

作为一种粗略的判断标准,“一次过 Sample 的概率”是很重要的。好好准备了的程序,
如果经常不能写好立刻过 Sample,那一定是准备方法有问题。

最后再强调一件事情——发现程序有逻辑错,或者干脆算法有遗漏了的情况,别着急打补
丁。一个工作需要一个补丁,就很有概率需要更多的或者更大的补丁,很多时候你遗漏的
不是一个 Case 而是一类情况、一个大的角度,这种情况只有通过重新检查算法逻辑或者
实现逻辑才能扭转过来,拍脑袋打上的补丁只会增加未来差错的负担而已。

posted on   liugoodness  阅读(786)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述

导航

< 2010年3月 >
28 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
4 5 6 7 8 9 10

统计

点击右上角即可分享
微信分享提示