【转载】ACM总结

时间:2022-10-10 17:27:25

转自亲学长的总结

声明:本文是写给弱校ACM新手的一点总结,受自身水平和眼界所限,难免会有一些个人主观色彩,希望大牛指正

感谢@Wackysoft 、@哇晴天 、 @ 一切皆有可能1 的指教,现根据这些建议,文章已进行修改

先简单介绍一下自己:

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

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

总共有过5位队友

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

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

不适合搞ACM的类型:

书呆子类型(包括一部分学霸):把ACM当成学算法,算法步骤一个一个都记得很熟,刷题时一个题一个题的抠,无论是看书或刷题都非常认真,很多学霸专业课能学得很好,但不一定适合搞ACM。我只想说,好好的学你的专业课去吧,你丫的搞什么ACM?

还有就是数学思维能力很差的,学数学就是记公式背定理,典型的“文科生”

我见过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

单调队列优化看这篇:

树形DP看这篇(极好,题目最好全做做):

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

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

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

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

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

这里只是举个栗子,只是一小部分,并不是全部,希望大家养成自己主动搜专题这种习惯,不要像完成任务一样刷完lrj就完事,要有深入钻研的劲头,要主动去寻找资源

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

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国家队队员所写,大部分都是经典,新手不建议看,知识储备到一定量后读读这些论文对能力的提高有很大的帮助,很大程度地扩展你的视野,一定要细读,上面的题目都要做做。(但也不是所有的集训队论文都值得读,质量还是有差别的,随着时代的发展,有些东西也可能过时,也可能有些东西现在看来比较简单,但可能在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也不重要,金子在哪都能发光,不过在弱校很难得到这么好的锻炼机会。

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

PS:SDUST已经夺过省赛冠军啦!相信接下来的区域赛也是越来越棒的!

【转载】ACM总结的更多相关文章

  1. [转载]ACM(访问控制模型),Security Identifiers(SID),Security Descriptors(安全描述符),ACL(访问控制列表),Access Tokens(访问令牌)

    对于<windows核心编程>中的只言片语无法驱散心中的疑惑.就让MSDN中的解释给我们一盏明灯吧.如果要很详细的介绍,还是到MSDN仔细的看吧,我只是大体用容易理解的语言描述一下. wi ...

  2. 转载 ACM训练计划

    leetcode代码 利用堆栈:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/http://oj.leetcode. ...

  3. &lbrack;转载&rsqb;ACM搜索算法总结(总结)

    原文地址:ACM搜索算法总结(总结)作者:GreenHand 搜索是ACM竞赛中的常见算法,本文的主要内容就是分析它的 特点,以及在实际问题中如何合理的选择搜索方法,提高效率.文章的第一部分首先分析了 ...

  4. 转载- ACM常见的各种说法

    from : http://blog.csdn.net/qq_15015129/article/details/52738184 1.答案错误 —— wrong answer 就是最常见的.这个没办法 ...

  5. 转载acm几何基础(2)

    判断两条线段是否相交: 矢量 如果一条线段的端点是有次序之分的话,那么这种线段就称为 有向线段,如果有向线段p1p2的起点p1在坐标的原点,则可以把它称为矢量p2 矢量的加减 设二维矢量 P = (x ...

  6. 【转载】 从ACM会议看*计算机科学与国外的差距

    ps:   这是一篇06年的文章,与今日的国内计算机行业学术圈环境简直是天翻地覆,很不错的history,值得mark下,今日的cs学术发展十号是坏不发表意见,但是history是值得对比,借鉴,思考 ...

  7. ACM之路(转载)

    转载自:https://www.cnblogs.com/tianjintou/p/4139416.html 要注意,ACM的竞赛性强,因此自己应该和自己的实际应用联系起来. 适合自己的才是好的,有的人 ...

  8. 北大ACM题库习题分类与简介&lpar;转载&rpar;

    在百度文库上找到的,不知是哪位大牛整理的,真的很不错! zz题 目分类 Posted by fishhead at 2007-01-13 12:44:58.0 -------------------- ...

  9. 【转载】ACM总结——dp专辑

    感谢博主——      http://blog.csdn.net/cc_again?viewmode=list       ----------  Accagain  2014年5月15日 动态规划一 ...

随机推荐

  1. HDU1020字符串操作

    #include <stdio.h> #include <string.h> int N; int size; void main() { scanf("%d&quo ...

  2. 何为HDFS?

    该文来自百度百科,自我收藏. Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点.但同时, ...

  3. 在ios中使用第三方类库

    在项目开发中经常会用到一些第三方类库,通常有两种方法来做到:一种方法是直接把所有的.h和.m文件复制到项目中:另一种方法是把.xcodeproj拖到项目中生成静态链接库并引用. 方法一:直接复制所有源 ...

  4. DFS&lpar;剪枝&rpar; POJ 1724 ROADS

    题目传送门 题意:问从1到n的最短路径,同时满足花费总值小于等于k 分析:深搜+剪枝,如果之前走过该点或者此时的路劲长度大于最小值就不进行搜索. /************************** ...

  5. elipse 调试 反射 invoke 子类

    真实案例: 调试一个接口,子类invoke的,结果断点断不到: 查找两个项目间的关联.依赖,无果. 问人吧,结果是配置文件没改成本机: #============================# # ...

  6. 洛谷 P1064 金明的预算方案

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今 ...

  7. WebService到底是什么

    WebService到底是什么 http://blog.csdn.net/wooshn/article/details/8069087 张孝祥WebService  http://wenku.baid ...

  8. Spring源码情操陶冶-PathMatchingResourcePatternResolver路径资源匹配溶解器

    本文简单的分析下spring对某个目录下的class资源是如何做到全部的加载 PathMatchingResourcePatternResolver#getResources PathMatching ...

  9. 6&period;1-uC&sol;OS-III软件定时器

    1.软件定时器是 uC/OS 操作系统的一个内核对象,软件定时器是基于时钟节拍和系统管理创建的软件性定时器,理论上可以创建无限多个,但精准度肯定比硬件定时稍逊一筹. 2.软件定时器启动之后是由软件定时 ...

  10. php中常用的正则表达式函数

    php中常用的正则表达式函数 * preg_match() * preg_match_all() * preg_replace() * preg_filter() * preg_grep() * pr ...