zoukankan      html  css  js  c++  java
  • 谈ACM生涯总结的经验

    自从我在博客上留下了qq之后,不时会有热心网友来询问我关于算法竞赛的经验。由于每次我都会想到哪儿说哪儿,导致遗漏一些比较关键的信息,所以我试图总结一些问的频率比较多的问题,

    同时我也希望在我还尚未远离算法竞赛这个圈子的时候,对我两年来短暂的职业生涯做一些总结。

    首先,我必须声明,以下的仅能作为一位即将退役选手个人总结的经验,如果有不认同的地方,欢迎通过qq或者评论区交流。

    其次,这不是退役记,退役记很大一部分是写给自己看的,而这篇文章我会尽量保证客观。并且,我毕竟还没有事实意义上的退役——下个月还有一场EC-final.

    关于我的背景:0基础,大一接触ACM,双非 + 弱校,往届学长没留下什么传承,算法竞赛全靠自学,19赛季训练/获奖情况 看这里,以下只能作为个人提供的参考,不是什么成功者/过来人的指导

    1.参加算法竞赛的初衷最好可以是热爱

      将"热爱"放在第一点说,是因为我觉得他足够重要——如果只是因为单纯的喜欢做算法竞赛的题目,那剩下的问题只是足够的训练时间和志同道合的队友了。

      但事实上,大多数的竞赛选手往往抱着功利的心态参加算法竞赛——希望拿一些牌给自己的简历上增加亮点。并不是说抱着这种心态的人一定打不好比赛,相反,如果自制力够强的话,即使是抱着追求功利心态的想法也可以打到很不错的成绩。

      事实上,像我一样功利 + 热爱也未尝不可,一方面有来自拿奖的压力,一方面也不会把刷题看作是一件需要很大努力的事情。

    2.我始终认为ACM作为一个团队比赛,最最重要的是个人能力,其次是队友。

      首先个人能力是毋庸置疑的,否则为什么三个毫无配合的中学生可以虐区域赛的场。

      其次,我说的来自队友的重要性,并不单指比赛的时候需要发挥出 1 + 1 + 1 > 3 的效果(当然这是一个队伍起码需要做到的)

      更重要的是,来自队友的督促是可以逼迫自己加紧训练的,如果队内存在1-2个从来不参加训练的摸鱼选手,那对剩下的人训练积极性是一个非常大的打击。

      如果有志同道合的队友每天跟着一起保证日常训练,难题交流的话,不仅能够有效提高水平,也会提升参赛的兴趣。

    3.怎么选队友?

      ·首先,队友水平不可以比你菜太多,因为这往往意味着不够努力或是智商差距太大。当然,如果是因为训练时间上的差距还是可以接受的(例如有一些基础的OI选手和0基础选手或是大三和大二选手组队)

      ·其次,别找混子队友,如果只能匹配到混子队友的话,专注于把你自己的实力提升上去匹配更强的队友组队。如果恰好整个学校的acm选手除了你都是混子的话,我觉得如果不是天赋异禀或非常热爱,可以另谋出路。

      ·队伍中一定要有个能起带头作用的队长,需要组织训练和做题,调动队内氛围,及时把摸鱼队友换掉等等,当然,不是说队长刚组队就需要有这些能力,但是需要他在之后的过程中学着去干这些事情,这些"脏活累活",总是需要有一个人站出来做的。

      ·总之,选队友的指标没有那么复杂,在可供范围内选择 够强 + 够努力 的队友,适用于多数情况。

    4.怎么平衡日常学业?

      首先,但凡不是高中阶段就具备强大实力,进入大学以后可以随便获得奖牌的选手,一定会因为算法学习和日常训练消耗大量的时间,因此不可能不影响课内学习

      Q:那我怎么听闻jls,clj等人一边参加算法竞赛一边绩点无敌呢?A;他们如果不参加算法竞赛专注于绩点,是可以拿到更无敌的绩点的,只是这没必要。

      所以,如果真的热爱算法竞赛,是需要有牺牲一些绩点或者上课时间的觉悟的,这也是我为什么之前强调队友的重要性——大家一起逃课训练才带劲嘛,一个人为了队伍成绩逃课,另一个人为了个人成绩上课,影响逃课人心态是必然的。

      由于我们队的特殊性——大二的时候队友在实习,大三的时候队友在考研。所以我们队很难做到我希望的那样一起逃课训练,这也直接导致了我决定分出一部分的时间管一下绩点。所以我虽然两年的成绩是专业第一/二,但我清楚的知道我并不是两头兼顾,而是如果我不分出管绩点的时间一心训练的话,我们一定可以取得好得多的成绩的。

      所以,如果能找到愿意跟你一起逃课训练的队友,我还是非常建议放弃一部分绩点(甚至是大部分)去训练的

    5.算法太难了?我连最简单的DP/01背包都学不明白?

      对于我们普通人来说,这几乎是必然遇到的问题了。但他其实并不如你想象的难,万事开头难在这里形容的恰到好处。同时,很多专题往往开始是一些比较简单的模板题,稍微做几题就会上升到铜牌/银牌题的水平了。对于一个刚入门的初学者来说,一下子遇到这些充斥着思维的题实在是太难了。我当初也是靠对着题解一行一行敲代码来的(尽管这没什么用),DP的状态转移公式怎么看都看不明白——但是总有一天,你在过了一段时间再回过头来看它的时候,会觉得恍然大悟,会突然明白DP原来是这么一回事情。

    6.关于学习的路线,学习的方向?

      这个在这里就不具体说明了,在算法竞赛影响力逐渐扩大的今天,这些东西百度上搜一搜就能搜到了。洛谷,vjudge上也有很多的推荐。

      只是可以说明:在一开始,数论(扩展欧几里得定理等)/图论(最短路)/数据结构(线段树)/其他(DP,贪心)等等的算法几乎是没有联系的,并没有严格的学习拓扑序,如果你学不懂DP,你或许可以尝试一下学学最短路或是线段树,这都没有问题,毕竟我是在打了一年半之后才正式开始接触数论。为什么说是一开始?因为到了后面,就会把这些知识相结合,出现像线段树优化dp的题目了,这时候就要求你两者都会。

     

    7.和同级/学弟 的水平相差太多,感觉OI选手天下第一?
      迷信OI选手不可取。如果不去追求顶尖的水平(打入world final 或是 排名top5)的话,大一开始0基础完全是可以做到的,更何况ACM几乎是一个一个队花下多少时间,用了多少努力,配上成员相应的智商,就可以收获相应奖牌的比赛。没必要和特定的人/群体去比,如果参加比赛没有拿到银/金,大多数情况下只是因为你的努力不够到达这个层次,而不是因为你是0基础选手。

      远有kuangbin大三开始problemA + B,研一打入wf,近有我队友机械专业大三开始接触ACM,同时考研,大四能拿金牌题的一血。

      弯道超车的事情在圈子里是十分常见的事情,退一万步说,寻常OI选手打到大三总共五年,0基础选手只要愿意打到研一也是五年,如果愿意,五年时间几乎足够任何选手冲击world final了

    8.推荐书籍?

      首先我是不建议仅通过看书学算法,对着一本书的专题楞做的。我个人还是建议通过查博客/看书/看题结合起来学,单看书容易睡着,也容易劝退

      最经典的刘汝佳的白书/紫书,但是我个人是不建议不是天赋异禀的初学者对着他刷的,里面很多题还是太劝退了,我到了快退役也没把它看过多少

      李煜东的算法竞赛进阶指南[蓝书],这本我刷过几个章节,写的挺不错的,建议对着刷的同时找同类型的题做,每个专题题量还是太少

      挑战程序设计竞赛,这本书挺适合初学者的,没有上面两本这么难,看看也挺快,可以看一看

      事实上网络上资料这么多,并不是非要买几本书刷的

    如果还有什么其他的问题或是有不同的意见,欢迎在评论区或者加qq沟通

  • 相关阅读:
    Luogu 1080 【NOIP2012】国王游戏 (贪心,高精度)
    Luogu 1314 【NOIP2011】聪明的质检员 (二分)
    Luogu 1315 【NOIP2011】观光公交 (贪心)
    Luogu 1312 【NOIP2011】玛雅游戏 (搜索)
    Luogu 1525 【NOIP2010】关押罪犯 (贪心,并查集)
    Luogu 1514 引水入城 (搜索,动态规划)
    UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)
    Luogu 1437 [HNOI2004]敲砖块 (动态规划)
    Luogu 1941 【NOIP2014】飞扬的小鸟 (动态规划)
    HDU 1176 免费馅饼 (动态规划)
  • 原文地址:https://www.cnblogs.com/Hugh-Locke/p/11954138.html
Copyright © 2011-2022 走看看