HLUOJ 别忽略思考 [转]

“你上午在机房待了一上午干了些什么?”

“做题。”

“那下午的四个小时呢?”

“当然是做题。”

“晚上呢?”

“做题呀……”

“那你什么时间思考呢?”

以上无聊的老段子你当然可以忽略,但是思考这个问题是绝对不能忽略的。

在开始写程序前别忽略思考

你肯定跳了起来:“在开始写程序前我怎么会不思考呢!不思考哪来的算法?”不,你很可能没有思考,你的算法可能仅仅是凭“感觉”得出的。就像我今天 做那道Letter Game时一样,一看那道题就觉得要写一个Trie——肯定要有频繁的字符串查号嘛……然后再对原字符串进行全排列,然后再……写了一百多行时我发现我受 够了。不应该是这样的,远不应该是这样的。你只是模模糊糊有了一点算法的“感觉”就开始写程序,然而你甚至根本就没有仔细对题目本身进行思考!为什么字典 里的词的长度大于3小于7?这可以给我们带来什么样的便利?是的……我想你已经知道我的意思了:要思考特殊性,而非一般性。我在写程序前由于没有从题目的“特殊性”中思考而是只看到了所谓的“一般情况”,所以走了弯路。是的,别一看到题就噼噼啪啪敲键盘,那样真的不cool。

在coding中别忽略思考

那么对算法有了清晰完整的认识后就该比拼谁的打字速度快吗?不,一定不是这样的。这时也要思考。不过这个阶段的思考过程似乎“潜意识”的成分居多,有时会突然发现算法中的纰漏等等。就不要“刻意”一边coding一边thinking了……还是快点写完程序再说吧。

在调试中别忽略思考

把程序交上去……WA/TLE。我想你预料到这种情况了不是吗?那么调试吧,调试吧……但这时先思考一下!哪一部分是你写程序的时候最感觉别扭最感 觉不舒服的地方?哪一部分代码是你自己可能都没有真正理解的?好了……抓住那段代码。像我这种长于静态调试的家伙就会不厌其烦地在.log中把可疑的步骤 全部输出出来…… 做完题后别忽略思考

OK……AC了,天空晴了,花儿开了,一切都结束了。可是真的是这样就万事大吉了吗?不是的。你还要思考。不刻意地去思考你很难从一道题里得到什 么。写几句简短的Analysis,也许你会发现那些萦绕于心的想法变得清晰,你会发现你再次遇到那类题时会成竹在胸而不是依然不知所措。我想你已经知道 为何很多神牛(如maigo就是最好的例子)都有大量的解题报告传世,也许它们是互为因果的。