声明:本文是写给弱校ACM新手的一点总结,受自身水平和眼界所限,不免会有一些我的主观色彩,但愿大牛指正html
感谢@Wackysoft 、@哇晴天 、 @ 一切皆有可能1 的指教,现根据这些建议,文章已进行修改web
先简单介绍一下本身:算法
高中在OI打过一段时间酱油,大一后暑假进入ACM集训队,到大三寒假,总共一年半的ACM生涯。编程
总共参加了四场比赛:区域赛一银(2013长春)一铜(2013杭州)一铁(2012金华),省赛狗血一银(2013山东)数组
总共有过5位队友数据结构
我的感受SDUST ACM集训队的最大缺点就是经验得不到传承,几乎每一届都是从零开始,咱们11级更是这样post
下面是我一年半以来根据日常对11级队员习性的了解和各个队员最后的兴衰得出的一些经验,固然这些规律是到最后才发现的,要是早就知道并一直坚持的话,我也不至于如今这么水-_- !学习
不适合搞ACM的类型:优化
书呆子类型(包括一部分学霸):把ACM当成学算法,算法步骤一个一个都记得很熟,刷题时一个题一个题的抠,不管是看书或刷题都很是认真,不少学霸专业课能学得很好,但不必定适合搞ACM。我只想说,好好的学你的专业课去吧,你丫的搞什么ACM?ui
还有就是数学思惟能力不好的,学数学就是记公式背定理,典型的“文科生”
我见过ACMer的常见几类:
天才型:(这个在我们学校基本不存在),因此就不用考虑了-_- !
依赖题解型:思考问题一想不出来了就想上网搜题解,缺少独立思考的过程,把题解看懂就了事,“不求甚解”,没有本身深刻钻研的劲头,“伸手党”,刷题不少但思路很板,这种人面对新题很难有本身的想法,通常不会成为主力
思路型(也是我的比较推荐的类型,可能也和我的性格有关):刷题较慢,喜欢独立思考(尤为是思路题),不少时候本身AC之后才查题解,为的是拓展思路,寻找不一样的解法,固然不是一点不看题解,有些题目不看题解是作不出来的,有的技巧不看题解也不会知道,只是没有依赖题解,每一个题目都是认真思考后肯定实在不能作再去查题解,且刷完一个专题花一些时间去总结,也喜欢看别人博客里的专题总结,这种人早期学习进度较慢,比赛屡屡受虐,是别人眼里的弱渣。后来随着本身独立思考量和经验的累加优点逐渐显现出来,“有本身的想法”,基础打好了之后一直在钻研难题(第二本书上本身负责的专题的难题能独立刷个大部分),最后成为队里的主力(不过一些博友说这种人后期很难突破极限,没有深刻研究理论,没有站在巨人的肩膀上,好吧,只能说咱们太弱,还没到那个阶段,或者这个也要看他练的专项吧)。
理论型:数学等理论研究的很深,读过几本有深度的理论书,数学思惟很强,金牌队伍确实须要这样的人,我身边还没出现过这样的人,我我的感受能力得先达到必定程度(好比说银牌)再去深刻研究这些理论,要不你可能吃不消,能力未到就算你看懂了也未必会运用。我所见到的都是能力未到的、刚开始接触这一部分就抛开lrj的书在研究其余理论书的人,好比说第二章刚开始刷就在看组合数学和数论方面的厚厚的书,结果大都摔死了。我的建议:若是你的目标是金牌或更高,后期队里至少要有一个深刻去研究这些理论的,若是你的目标是银牌或更低,读读国家集训队论文这些理论衍生品就够了,这种人强队必须得有但不建议早期就搞。
通常型:同大多数人同样,循序渐进的刷题、看书、看博客,写博客通常不去总结或不多总结(写题解基本就写一两句话再贴上代码就完事,我只想说你这样的题解还不如不写),眼界仅限于手头的书,不会主动去寻找资源,没有花样(提起花样,我就有一个效率洁癖、不少时候在OJ上作题、不少题目就算AC了我也会一直去优化,直到优化到不知道再怎么去优化,时间排名前几,这样虽然浪费时间,可是收获仍是挺多的),估计到最后很难成为最突出的那几个,就看我的努力程度和我的天赋了,除非你很是拼或有点天赋或坚持的时间比别人长。
我的感受 ACM水平=Σ思考量*难度 + 经验的累积 + 一点点天赋
而不是简单的题数的累积,固然题数至少要达到必定量才能入门,只看书不刷题=纸上谈兵
ACM是打着算法的幌子在比脑子
依赖题解是练不出来“脑子”的,那样的思惟是别人给你的,没有本身的想法,独立思考才能提升本身的战斗力,面对中难题才能“有本身的想法”
不少时候题目涉及到的算法很简单,可是思路很难,或者根本就不涉及算法,所以 ACM!=算法竞赛
但这并不表明你能够不学算法只刷题,学习算法能够很好的锻炼你的思惟能力,放弃算法你很难走远
感受本身的语言较无力,这里引用《3xian之所在》的几段话:
“必需要看到,玩ACM跟玩算法是不一样的事情,ACM是考验智慧、考验综合素质的,我敢大言不惭地说,ACM玩得好甚至不须要去刻意学什么算法。虽然咱们偶尔见到一些题目须要一些成熟的经典的算法,那些题目是我喜欢的题目,可是那些题目属于最垃圾的ACM题目。另外一角度来讲,不少人以为本身ACM出成绩了就表明本身算法不错了,这是一种错误观念,当你深刻任何一个方向的算法领域的时候,你会发现ACM那点东西过小儿科了,太不入流了。说白了,ACM是打着算法的幌子来让你们比脑子。”
“对于ACMer来讲,Matrix67早已放过话,“USACO你老老实实一个字也别看解题报告,作完你就无敌了”。咱们随处可见一些作了不少不少题目实力还上不去的人,此类八成是是有看解题报告的习惯,其中包括想都没想就冲进discuss里头瞄来瞄去。”
“08年秋天,ACM圈子冒出了一个博客点击率很高的家伙,叫zfy。他的出现让很多人长了见识,不得不表示称赞。原本他是一个做风不错的人,可是在必定程度上让一些人养成了新的坏习惯——作不出题就找论文,这跟找解题报告有什么区别呢,就名字不一样。咱们学校确定也有人以为,三鲜是否是脑子被驴舔了,作个破题用不用看那么多论文。事实上我基本不在作题的时候碰论文,假若二者糅合在一块儿,最终结果基本就是这头感觉不到论文的内涵,那头题目也白作了。”
“时常在网上看到不少人比完赛长吁短叹,也有些人号称“原本有夺金的实力”、“没发挥好”。我曾经也有段时间神勇地跑去作掉不少难题,一度觉得本身到了登堂入室的水平,后来发现彻底不是这么一回事。真正的高手是什么样的,他们不须要吃饭时候的冥想,不须要靠洗澡时候的灵光一闪,他们比赛的时候坐在那儿就能熟练地作出各类难题,他们在读错题的时候能保证成绩,在数据错的时候能保证成绩,在没人敢提交的时候果断提交,在比赛快结束的时候冷静编码。简单来讲就是,他们不只仅是作题能力强,而更是综合素质强。比赛以后说太多“原本”、“若是”的人,属于心理素质欠佳,这是综合素质重要的一块,也是阻碍长进的一块。所以,当你没有达到预期的目标,根本就不该该想着你丢了一块牌,而应该想一想本身是否真的值那一块牌。”
“国内的ACM圈子老是表现出一种浮躁的风气,尽管不缺少超强的人,但强人都很低调,或者说,强校更可能是闭门造车。能够去看看国内ACM最火的POJ论坛,琳琅满目的欠揍的东西:求/贴数据的、求/贴代码的、叫人家来查错的、日题目的、炫耀的、留名的、二三流人物相互膜拜的。看看站内信,多少是求代码的(个人原则是问我思路的必定悉心回答,要代码的一概无视)。再看看百度到的解题报告,多少是相互抄袭不求甚解的。”
借用GaoYusong大神的一句话“不要看解题报告,实在不会,作其它的,而后过段时间就想一想,解题报告是给会这个题的人看的,拿来比较。”
远离题解不是不看别人的东西,那样单干属于闭关锁国,除非你是天才,不然不会搞出什么名堂来。远离题解是让你不要对题解产生依赖,不要一想不到思路就去查题解,最好是实在没有思路再去看,这个度本身去衡量。尤为对新手来讲,懂得知识很是少,不少时候根本无从下手,能够适当的去查题解。别人的经验仍是要借鉴的,多看别人的总结,尤为是一些优秀的博客。
Codeforces和Topcoder很重要!
最专业的衡量你的ACM水平的不是你的题数,不是你的省赛成绩,不是你的区域赛成绩,是Codeforces和Topcoder的rating
由于比赛成绩受不少方面影响,且一年只有那一两次机会,成绩不必定能表明本身的水平
可是Codeforces和Topcoder能够,这两个比赛都是国际性的,几天就会有一场比赛,全世界的ACMer都在上面作题,题目质量很是值得确定,且上面的题目通常都是纯思路题,不多涉及算法,能很好的体现和锻炼你的思惟能力,很重要的一点,你能够看别人提交的代码,能够找找世界冠军级的人的代码看看,找找差距
何时能把Codeforces打黄了,你就能够绝不犹豫的说你是SDUST ACM里最牛逼的
Codeforces和Topcoder rating = 最专业的思惟能力+编程能力和速度的衡量
其实第一本书的东西没必要全看,刷个大部分就好了,第一本是基础,提升仍是靠第二本书,其中第一章必刷,若是有能力,第三章也必刷,其余的里面再选一章搞就能够了,第二本的练习题颇有价值,若是你有能力,建议不要放过里面的难题(能独立完成收获到的确定是最多的)
另外,我也很是推荐《挑战程序设计竞赛》这本书,因为我快寒假的时候才买这本书,退役之后只是寒假里看了一部分,发现这本书很不错,不少地方讲的比lrj的书更通俗易懂,好比说后缀数组,我看一遍就能看懂,但不少地方不如lrj讲的有深度,这三本书你们选择性阅读吧。据说上海交大的几本书也不错,不过难度偏大,不适合新手
若是你搞某一方面搞不动了,能够先看点别的,不要一直死磕,由于你的能力还没到,其实随着你不断的刷题和比赛,思考,你的能力一直在提升,就像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.docin.com/p-627462377.html
若是你刷完你负责的专题,最后连这个专题谁的博客写的最经典你都不知道,只能说明你练的深度不够
若是你负责动态规划专题,若是你只刷完两本书上的动态规划就完事,最后连斜率优化,队列优化都不知道,你还练个毛的动态规划
这里只是举个栗子,只是一小部分,并非所有,但愿你们养成本身主动搜专题这种习惯,不要像完成任务同样刷完lrj就完事,要有深刻钻研的劲头,要主动去寻找资源
另外,数学方面,推荐几篇极好的论文,曾经给过我很大帮助的
https://quartergeek.com/eight-gcd-problems/
国家集训队论文是笔宝贵的财富,吊丝逆袭的利器
都是IOI国家队队员所写,大部分都是经典,新手不建议看,知识储备到必定量后读读这些论文对能力的提升有很大的帮助,很大程度地扩展你的视野,必定要细读,上面的题目都要作作。(但也不是全部的集训队论文都值得读,质量仍是有差异的,随着时代的发展,有些东西也可能过期,也可能有些东西如今看来比较简单,但可能在10年前是很是难的,不过很是经典的集训队论文仍是不少的,好比clj的几篇,能给你很大的启发)
这里有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也不重要,金子在哪都能发光,不过在弱校很可贵到这么好的锻炼机会。