ACM感悟_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > ACM感悟

ACM感悟

 2014/5/31 13:03:42  Chierush  博客园  我要评论(0)
  • 摘要:声明:本文是写给弱校ACM新手的一点总结,大牛请无视先简单介绍一下自己:高中在OI打过一段时间酱油,大一后暑假进入ACM集训队,到大三寒假,总共一年半的ACM生涯。总共参加了四场比赛:区域赛一银(2013长春)一铜(2013杭州)一铁(2012金华),省赛狗血一银(2013山东)总共有过5位队友个人感觉SDUSTACM集训队的最大缺点就是经验得不到传承,几乎每一届都是从零开始,我们11级更是这样下面是我一年半以来根据平常对11级队员习性的了解和各个队员最后的兴衰得出的一些经验
  • 标签:

声明:本文是写给弱校ACM新手的一点总结,大牛请无视

 

先简单介绍一下自己:

  高中在OI打过一段时间酱油,大一后暑假进入ACM集训队,到大三寒假,总共一年半的ACM生涯。

  总共参加了四场比赛:区域赛一银(2013长春)一铜(2013杭州)一铁(2012金华),省赛狗血一银(2013山东)

  总共有过5位队友

 

个人感觉SDUST ACM集训队的最大缺点就是经验得不到传承,几乎每一届都是从零开始,我们11级更是这样

下面是我一年半以来根据平常对11级队员习性的了解和各个队员最后的兴衰得出的一些经验,当然这些规律是到最后才发现的,要是早就知道并一直坚持的话,我也不至于现在这么水-_- !

  

我所了解的ACMer主要分为以下几类:

A类:天才型(这个在咱们学校基本不存在),所以就不用考虑了-_- !

B类:刷题很快,平常也很勤奋,题数是最多的几个之一,但有一个习惯就是喜欢看题解,思考问题一想不出来了就想上网搜题解,最后都看题解都弄懂了,这种人早期因为刷题特别快,同一时期学的东西比别人多,是队友眼里的大神,感觉他懂的比别人多。因为太依赖题解,后期的问题就逐渐显现出来:做自己见过的类型的题目的时候是大神,一遇到新题就歇菜(要知道区域赛上基本没有原题),且比赛完后基本上属于“事后诸葛亮”类型,“哦~,这题不就是那XXX吗?这么水我当时怎么没想到呢?我要是正常发挥的话,这场比赛至少能作X题啊!”,最终结果也就能解一些低档题,面对中档和高档题基本没戏

C类:刷题较慢,喜欢独立思考(尤其是难题,思路题),自己AC以后才查题解,为的是拓展思路,寻找不同的解法,当然不是一点不看题解,有些题目不看题解是做不出来的,有的技巧不看题解也不会知道,只是没有依赖题解,且刷完一个专题花一些时间去总结,也喜欢看别人博客里的专题总结,这种人早期学习进度较慢,比赛屡屡受虐,是别人眼里的弱渣。后期随着自己独立思考量和经验的累加优势逐渐显现出来,基础打好了以后一直在钻研难题(第二本书上的难题刷个大部分),成为队里的主力,也就是最后能搞中高档题的人。

D类:把ACM当成学算法,算法步骤一个一个都记得很熟,刷题时一个题一个题的抠,无论是看书或刷题都非常认真,这种人给我的感觉就像是文科女学数学一样,做的笔记非常认真,老师讲的题也非常认真记,总结的一条条的,但最后数学成绩还是那么差。我只想说,好好的学你的专业课去吧,你丫的搞什么ACM?

 

个人感觉    ACM水平=Σ独立思考量*难度 + 经验的累积 + 一点点天赋

而不是简单的题数的累积,当然题数至少要达到一定量才能入门,只看书不刷题=纸上谈兵

 

ACM是打着算法的幌子在比脑子

依赖题解是练不出来“脑子”的,那样的思维是别人给你的,没有自己的想法,独立思考才能提高自己战斗力,面对中难题才能“有自己的想法”

区域赛上的简单题一般越来越少的涉及算法了,像去年杭州我们队做出的4个题里面,不涉及一点算法知识,纯思路题,面对这样的题目只有自己的思考量达到一定的程度才能从容应对

但这并不代表你可以不学算法只刷题,学习算法可以很好的锻炼你的思维能力,放弃算法你很难走远

 

要学会取舍。举个栗子,拿数学专题来说吧,有的人看到数论的时候就抱着一本《初等数论》在读,看组合数学的时候就拿着一本厚厚的《组合数学》在读,最后看不到一半就扔了,也没啥效果,纯属浪费时间,个人感觉其实根本不用去看那么多东西,直接去搜专题博客看,或去国家集训队论文里找,别人已经总结的很好了,何必去看一整本书?另外,个人始终感觉深究数论是一个坑,很浪费时间又很难出成果,性价比很低,不建议大家去深究(个人建议,仅供参考)

 

远离题解不是不看别人的东西,那样单干属于闭关锁国,除非你是天才,否则不会搞出什么名堂来。远离题解是让你不要对题解产生依赖,不要一想不到思路就去查题解,最好是实在没有思路再去看,这个度自己去衡量。尤其对新手来说,懂得知识非常少,很多时候根本无从下手,可以适当的去查题解。别人的经验还是要借鉴的,多看别人的总结,尤其是一些优秀的博客。

 

Codeforces和Topcoder很重要!

最专业的衡量你的ACM水平的不是你的题数,不是你的省赛成绩,不是你的区域赛成绩,是Codeforces和Topcoder的rating

因为比赛成绩受很多方面影响,且一年只有那一两次机会,成绩不一定能代表自己的水平

但是Codeforces和Topcoder可以,这两个比赛都是国际性的,几天就会有一场比赛,全世界的ACMer都在上面做题,题目质量非常值得肯定,且上面的题目一般都是纯思路题,很少涉及算法,能很好的体现和锻炼你的思维能力,很重要的一点,你可以看别人提交的代码,可以找找世界冠军级的人的代码看看,找找差距

Codeforces和Topcoder rating = 最专业的思维能力+编程能力和速度的衡量

 

其实第一本书的东西不必全看,刷个大部分就行了,第一本是基础,提高还是靠第二本书,其中第一章必刷,如果有能力,第三章也必刷,其他的里面再选一章搞就可以了,第二本的练习题很有价值,如果你有能力,建议不要放过里面的难题

 

如果你搞某一方面搞不动了,可以先看点别的,不要一直死磕,因为你的能力还没到,其实随着你不断的刷题和比赛,思考,你的能力一直在提高,就像Topcoder和Codeforces曲线所显示的那样,比如说你现在看第二本书的某个地方死活看不懂,你可以先去搞点别的,等到你能力增长了一块,再回来看,发现很容易就能搞懂,这是你能力增长的最直接的体现

 

---------------------------我是分界线-----------------------------

 

下面是对有一定基础的同学的建议(最好是刷完第一本书的大部分和第二本的一两章以后)

 

书上面的题刷完以后,多搜些专题总结和别人的经验看,况且有很多专题书上根本就没有。比如举个栗子,动态规划有太多的种类,树形DP,概率DP,状态压缩DP,数位DP,插头DP。。。以及一些优化技巧,斜率优化,四边形不等式优化,单调队列优化等。每一个都是一个专项,都够你研究上一段时间,但同时这些知识也是非常实用的,这些里面有很多专题如果你不主动去寻找就很难遇到的,一般我寻找的途径就是看别人的博客的时候通过看别人博客的标签或博客里提到的新名词,然后我就会去搜索一下,看它到底是什么东西

举几个栗子,斜率优化DP推荐这篇:

http://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html

四边形不等式优化DP推荐看这篇:

http://www.cnblogs.com/ronaflx/archive/2011/03/30/1999764.html

单调队列优化看这篇:

http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 树形DP看这篇(极好,题目最好全做做): http://www.docin.com/touch_new/preview_new.do?id=481614395

这样的专题总结性的文章不光介绍专题知识,还有推荐的题目,看完后一定记得做做。

有些博客总结是非常经典的,比如说数据结构方面的神作:

http://www.docin.com/p-627462377.html

如果你刷完你负责的专题,最后连这个专题谁的博客写的最经典你都不知道,只能说明你练的深度不够

如果你负责动态规划专题,如果你只刷完两本书上的动态规划就完事,最后连斜率优化,队列优化都不知道,你还练个毛的动态规划

这里只是举个栗子,希望大家养成自己主动搜专题这种习惯

另外,数学方面,推荐几篇极好的论文,曾经给过我很大帮助的

http://wenku.baidu.com/link?url=SqZivcfB160pu488WZ8HoKaENZSBOItxhfKMNHdRntNQJT2NmUjs7ndQNkHx9l-dmgwwJ89RqBZz_PLDVIB9ex9Z2Rf6vipxrwA4exKYV2G

https://quartergeek.com/eight-gcd-problems/

http://wenku.baidu.com/link?url=xwfZwfgc9tprlkjyK6Kd8eZbLGJnZGJcQxWWdv1DUOv-xa-GulGANDY6drKc9gbab9rsN07xSSgVsyIx2Tk2erE6Q-EvE21UE5Gt54ZzlCu

 

国家集训队论文是笔宝贵的财富,吊丝逆袭的利器  

都是IOI国家队队员所写,经典中的经典,新手不建议看,知识储备到一定量后读读这些论文对能力的提高有极大的帮助,极大的扩展你的视野,一定要细读,上面的题目都要做做

这里有1999-2009国家队论文下载地址:

http://pan.baidu.com/share/link?shareid=2039995002&uk=3408034740

这里有最新的:

http://wenku.baidu.com/link?url=CKoUemxW3v_6-ffr26_ymzc2hcR08uJcujAL36sUUhzNQR2-fxB5iD9dbubM3lQcl0pnB7JRreFu3_ypD2oeCx_KHALmok9o_2jG3AJ93O7   (这只是其中的一篇,其他的在侧边栏上都有)

因论文数目太多,可以只挑自己专题内的或自己感兴趣的读

 

还有就是要多打比赛,因为比赛中学到的东西或许比你刷题得到的还要多,不光是知识,还有各种经验的积累

 

最后有时间有能力的就去读刘汝佳的黑书吧,新手一定不要读,对新手来说既浪费时间又没作用

 

我上面说的这些如果有人都能做到的话,估计他会是SDUST ACM历史上空前的大神

 

最后,我们为什么要参加ACM?

萝卜白菜,各有所爱,不感兴趣请勿进入这个圈子

ACM只是一种兴趣,是一个理想
比赛结果并不重要,重要的是过程所带给你的,证书或许只是一张废纸,唯一剩下的只有那更强的思维能力和编程能力和你的意志,大学里能把一件事做好并把它一直坚持下去是件很幸福的事情。而且可以肯定的说,参加个一两年的ACM,你的思维能力和编程能力绝对不可同日而语,尤其在我们弱校体现的更加明显。

当然,参加不参加ACM也不重要,金子在哪都能发光,不过在弱校很难得到这么好的锻炼机会。

 

最后希望SDUST ACM集训队越走越远

 

  • 相关文章
发表评论
用户名: 匿名