初学算法杂记

September 22, 2013 | 16:54

初学算法一个多月, 感想挺多, 写下来记录一下.

1. 学的太晚. 算法入门并不是一件入门的事情, 其实说到底学习算法本身就不是一件多难的事情, 只要是能够专心下来看书写练习, 并没有什么非常高深莫测的东西, 都是可以一步步掌握过来的. 我接触编程这么早, 现在才开始算法学习, 非常可惜. 这让我相当懊悔当初没有快些走上这条路. 庆幸的是我没有在大学也和算法擦肩而过, 我终于感到算法学习是一件有趣的事情.

 

2. 专题学习. 由于ACM组队的一些原因, 我选择了先专门学习图论方面的基础算法. 一个月来学习了深搜光搜, 单源最短路, 多源最短路, 最(次)小生成树, 求强连通, 求割点和桥, 网络最大流等等算法, 还做了一些题目. 做题目的过程是先艰苦后开心的. 一开始面对全英文的题目, 总是要查单词, 看半天才能看懂题目的意思, 看题目的时间简直比敲代码的时间还要长. 现在就好很多了, 尤其是做了不少水题后开始做中等题目, 有几种知识点的综合运用, 很过瘾, 把那些数据整来整去, 先怎么预处理, 然后怎么处理, 然后怎么查找输出结果, 这种快乐也是我没开始训练之前没想到的.

3. 效率与时间. 这个学期我花在算法的时间明显增多, 花在平时课业的时间明显缩短. 但是我感觉我花在算法上面的这部分时间不算高效率. 如果平时每一次练习都有比赛的紧张气氛的话, 那么学习的速度一定是飞快的. 但是这一点现在远远做不到.

4. 开心的氛围. 在集训队里面大家都是爱好编程的人, 聊起来可以很专业, 开玩笑也很有趣, 我很喜欢这里. 而且看到别人在不停的学习, 不停的进步, 我也感觉到我也应该这么做. 这是自学所没有的.

回想一下我最近的过程, 先是看了理论基础, <<算法导论>> 的图论这一章看了不少, 把严格的正确性证明过程都看过了, 虽然平时比赛的时候不会要证明算法的正确性, 但是如果有变形的题目, 那么这些证明过程变形一下用于自己变形的算法的正确性证明还是很有用的. 去队里的第一天见到neko13大神后我开始问他有关证明的问题, 他说平时做题的时候如果需要他也都会证明. 这点让我这种憧憬严谨型的选手很是开心.

Boss姜说他想要做一个网站把我们学校历届ACMer的队员都放到网站上面去, 那我也可以凑个名不正言不顺的第一届队员啦哈哈.

5. 关于获奖. 这个我是比较不在意的, 不知道我的这种态度会不会让队友觉得我坑的感觉:)  我是纯粹为了找一个学习算法的好氛围加入acm, 我不太喜欢智力竞赛, 可能是因为我对自己的智商没有什么信心吧. acm对学习算法起到的正面作用超出了我的想象, 感觉这是很棒的一个经历. 下个学习学校开课教授数据结构和离散数学(感觉太晚了)应该会学习的更轻松, 以后的编译原理和计算机组成原理一样会更轻松. 对于neko13想用汇编语言做acm题目的癖好我就不想说什么了. 估计neko13一开始在集训队成立之前把我当成大神了现在一定觉得很坑....

6. 一些杂话. 不知道是什么原因我感觉我在写东西的时候总不能把想到的东西组织成一块一块的然后写出来的文章总是零零散散, 既然如此那些没有来得及组织的语言就全都列在这一条.

一开始想用Vim作为编辑器, 但是后来觉得学习这个编辑器太麻烦, 就还是用回Codeblocks, 现在CB配置了个人模板以及Google 编程风格以后我还是很喜欢用的. 而且现在根本没有能力打到现场赛就不玩什么Ubuntu吧, 虽然以前玩过好几次, 但是总的来说很多事情我在Windows上面做还是比较方便, 因为十年来我对Windows已经非常熟悉了.

有时候看看neko把北大poj几乎刷了个遍, 就感到是不是自己也专门刷一个oj, 这样排名能更靠前. 后来想想这也没什么意思, 我已经起步晚了, 再这么搞已经会把很多时间花在质量不高的题目上面, 进步就会比较慢, 因此我就还是好题在哪里就去用什么oj做吧. 不追求什么排名了.

五点半就要开始长沙网络赛了, 准备关电脑离开宿舍. 感觉我这个新键盘的手感还是很好的, 虽然是薄膜键盘, 但是打字比较快的人用起来感觉相当舒服, 没有那种薄膜键盘的粘滞感, 相当清爽, 和我一样木有米买机械的朋友可以用一下i-rocks KR 6260. 相当满意.

什么时候如果运气好拿奖了, 一定奖励自己一个机械键盘. ^_^

( 转载请注明: Jecvay Notes )

说几句