放牧代码和思想
专注自然语言处理、机器学习算法
    博主不用扣扣,公事请博客留言,私事请微博私信。开源项目一律GitHub见,发错地方恕不回复,谢谢。

题解《挑战程序设计竞赛》系列完结

挑战程序设计竞赛第二版.jpg

断断续续花了三年时间,终于看完这本书,完成了所有习题。看书有很多种看法,开卷有益是一种,自始至终是另一种。有些题目很难,至今AC数只有数十人。据此估计,完整读完这本书的人应该不超过十这个量级。

读书的动机也有很多种,我既不是运动员,也不为面试,更不参和野鸡培训班或垃圾书。我记得CSDN上有位医生看完了整本黑书,我估计算法也无法帮助他评职称升主任。说实话,程序竞赛中的算法,大多数在日常开发中是用不上的。特别是数论,计算几何。就算是实际要用的算法,基本上也都有稳定优雅的开源类库,不会自己现场写。

那看算法竞赛书还有什么意义?当我花了整晚上单步一道题的时候,我也时不时冒出这个问题。这整晚的时间,够打好几盘游戏看好几话番组的,也够学点更实际的知识的,为什么要花在这些没用的题目上呢。就算做完这道竞赛题,也不会有什么实际的收益。但实际上,这是种类似于马拉松的锻炼。通过做一些超出能力范围的事,去拓展自己的能力范围。虽然没有立竿见影的功利收入,但长期下来的确可以提高个人层次。

看算法竞赛书的手段也有很多种。现实一点说,想要用尽量少的时间得到尽量多的拓展锻炼的话,可以先自己思考,但卡住的时候不要纠结,看看运动员是怎么做的。毕竟职业运动员有一套专业的训练系统与教练,资源上是比业余爱好者要好得多的。同样,要成为运动员,也是要额外付出大量时间和心血的。通过模仿专业人士,快速仿制自己的武器,不失为一种实用策略。

另外,看完《挑战》一书后,我也发现了这本书的瑕疵。这也是大部分书的通病——没有自我包含。光凭书中讲的知识,不足以完成课后习题。这也是为什么推荐多看别人代码的原因。事实上,在四处找资料的过程中,我发现不少国内的书籍、论文实际上讲得更加通俗易懂。

系列完结后,暂时没有新的计划。毕竟手头非常忙,极其忙。说到忙,不得不提这个系列的主旨以及博客的宗旨。

这个系列是一种模仿,大部分思想模仿自书上的例题和讲解,另一部分模仿自其他人的代码。如同前文所述,模仿是最有效的学习方式。但另一方面,毕竟不是自己产生的思想,很容易忘记。所以我需要复述,复述的听众当然是未来的自己。这和博客的宗旨是一致的,服务于个人备忘,不做任何保证。

最后,实在有太多事情要忙,抱歉无法及时回复评论。开源项目也是如此,这里的一切都是兴趣,没有义务。

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » 题解《挑战程序设计竞赛》系列完结

分享到:更多 ()

评论 5

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #5

    恭喜了,希望我4月也能顺利完成~提供一份习题册repo吧~
    https://github.com/yogykwan/acm-challenge-workbook

    白洞探3个月前 (03-27)回复
  2. #4

    啊,终于完了,恭喜啊,来晚了
    我也要更努力!!!

    ……4个月前 (02-20)回复
  3. #3

    太棒了!我也在看,还在看第二章,总是模仿你的代码

    清和4个月前 (02-13)回复
  4. #2

    加油!我正在看你的博客进行《统计学习方法》的学习!

    方辰19934个月前 (02-13)回复
  5. #1

    在自己成长的同时不知不觉也影响了许多未来的<自己>

    也是wo4个月前 (02-13)回复

我的开源项目

HanLP自然语言处理包基于DoubleArrayTrie的Aho Corasick自动机