我,从一个算法菜鸡选手到USACO全球前100的心路历程

 

分享人:西瓜

康奈尔大学计算机在读

USACO竞赛铂金级,排名全球前100

如果大家是抱着一周USACO拿大奖的想法来看的话,我这里没有你想要的东西。所有的学科竞赛都没有捷径,就算你天资聪慧,该走的路还是要走的,只不过比别人可能快一些,但是你该写的几万份代码,该看的几千份博客,其实一个都少不了。抱歉。
 
如果实在想要的话,睡了吧,梦里啥都有
 
我,从一个算法菜鸡选手到USACO全球前100的心路历程
01
因为一本搞定信息学竞赛的书而疯狂受挫
首先想分享一下我的学习进度。高一之前我参加了我们高中-成都七中的学科竞赛夏令营,在老师的建议下买了一本大概叫做《一本搞定信息学奥赛》的书,翻了几页,然后就开学了。
高一开学的时候,我可能刚刚看完最基础的for循环,基础的就等于啥都没有。看这几页的时候,我还写了一两个非常简单的1+1加到10这种代码,总的来说还是比较喜欢这种不用自己干活可以偷懒的感觉
 
我,从一个算法菜鸡选手到USACO全球前100的心路历程
高一开学之后,我们每周五会有一个兴趣班,两个小时我全部上的是竞赛,周六是全天从早上8点到下午5点这样一个时间段,讲座+考试+分析题目,全程都待在学校。
这种情况其实只持续了半年,因为高一上的时候,我们老师听说我在暑假看了书,以为我比较强,就把我扔到了一个很难的班,然后进行疯狂受挫
 
我,从一个算法菜鸡选手到USACO全球前100的心路历程
 
 
02
持续半年的零分状态
我高一结束的时候,其实不是很厉害,因为确实题目的练习量不是很高,虽然说我们高一结束就已经讲完了考NOIP会需要的所有知识,但是因为练习的不是很够,所以分是上不去的
 
我高一这一年过的比较艰难。CS程序是只要你有任何一个步骤,任何一个字符写错了,它都不会跑下去,不跑下去就意味着你是0分。这种0分的状态我大概持续了可能真的有半年,一共三道题,满分300分,每次考试三个半小时,每一次考试出来都是0分,那段时间其实是非常的受挫折,但确实是很喜欢这个东西,所以也就在竞赛班赖下来了。
 
我,从一个算法菜鸡选手到USACO全球前100的心路历程
赖到后面的话,慢慢就会发现,我这次考试可能有个10分,有个20分了,然后再到后面,诶,我有个五,六十了,其实高一这一整年是一个非常漫长也非常痛苦的状态。
03
连三等奖都无缘的困难群众
高一11月份的时候我考过一场NOIP,就是国内算法竞赛的入门级考试,这一次我什么奖都没有,按理说是不应该出现这个情况的,因为只要你哪怕只有10分,你都是个三等奖。但是我当时没有拿到奖的原因纯属意外。
 
当时班上是6个学生,三个学长给我们讲课,因为别的同学都很强,就没有考虑到像我这种困难群众,没有给我讲所有的程序开始之前都有一个输入输出的语句,相当于说如果不加这一行代码的话,测评的程序是没有办法来测试我的程序的,然后我所有的代码都没有加这一行,就是说我所有代码都跑不动,然后连最基础的三等奖都离我远去了。

我,从一个算法菜鸡选手到USACO全球前100的心路历程

04
零分选手到USACO铂金全球前100!
 

我,从一个算法菜鸡选手到USACO全球前100的心路历程

进入高二之后,我从10月份开始停课一个半月准备NOIP,周一到周六全部待在机房,这一段时间我觉得是我收获最大的一段时间。因为每天呆在机房的环境下,和我一起停课的同学是我们学校专门选出来竞赛很强的同学,在这种环境下,也对自己有一个鞭策的作用,因为你会发现自己和别人差得很远,这个差距已经大到了不是很能接受的地步。
对我来说的话,如果我发现我和周围同学差得很远的话,我真的会非常努力。从最开始的每天最多只能写一道题,得100分或者100稍微低一点点,到最后我每天基本上能写两道题,得一百七八分了。再后面,大多时候第3道题也可以再做一些的。

总的来说,其实这一个半月学了很多,而且
重要的是之前学过的东西,在这一个半月高强度的训练下去,去真正的熟悉它,然后去掌握它,去慢慢的了解掌握知识
这段时间之后,我又考了NOIP,成绩还是很差,二等奖。
 
我,从一个算法菜鸡选手到USACO全球前100的心路历程
一个部分是和平时训练形式有关,就是NOIP你只能提交一次,它测出来是多少分你就是多少分,但是我们训练的时候,很多时候我测了之后有bug,我改一改最后发现还是过了,我就会觉得其实我这道题是做出来了的 ,但是在考试的时候不是这样的,他不会再给你一次机会让你改一改再去测一次。

第二个原因其实还是一些自身能力的问题,因为毕竟我真正开始很大量的练习这些代码也只有一个半月的时间。

虽然NOIP考得很差,当时给了我很多的挫折,但我并没有放弃竞赛的学习,因为我觉得我可以拿到一个更好的成绩,自己付出这么多,结果不应该是这样,所以我后面接着去打了USACO的比赛。
高二12月份的时候,我进了USACO的黄金,然后1月份打进铂金,2月份的时候打出了我一个非常满意的成绩(小编说:也就是铂金级全球排名前100这样的成绩)。这一段时间成绩有长进,其实是因为知识都是之前已经学过的东西,NOIP考完之后我虽然没有去学校,但是在继续折腾这些已经学过的东西,反复的练习,同一个数据结构会写很多遍,直到我完全掌握。

 

 

05
学习两年CS,信息学竞赛对我的帮助
 
1. 普通编程的入门。因为国内也没有太多相应的CS教程,所以唯一有接触的话,其实就是接触竞赛了,你大概写那么一两个代码,或者说你稍微把算法学习一下,去看一些非常基础的算法之后,大概能感受到自己到底喜不喜欢这个东西。
2. 算法的入门。计算机科学确实是一个科学的学科,很多东西是非常理论化的,理论的东西其实就是算法的一个基础入门。大家如果后面想去学比如Computer Science的东西的话,算法的入门真的非常重要。而且就算你去做一些工业化的项目,CS其实还是非常基础的。
🌟 这里我想强调一下Computer Science计算机科学和编程的区别。CS其实教的是理论的东西,比如数论,图论,比较简单的博弈,范畴集合论这些偏数理化的东西。编程的话,其实在大学课程中,如果你不愿意涉及到这些板块,你可以走一些非常工业化的规划,稍微牺牲一下算法上的时间,保证它的效率或者稳定性之类的。其实真正的programmer就是写代码的人,他的算法不需要特别的强。所以这两个的区别其实就是理论和应用的一些区别。
 
我,从一个算法菜鸡选手到USACO全球前100的心路历程
 
3. 去发掘一个信息点,如果你有了基础的编程能力之后,想去深入的研究一下,像网络相关,网络安全,或者编程的理论、计算机相关,甚至软件开发、机器学习,在有了基础的编程能力之后,再去做这些研究相对来说会容易一些。
🌟 其实语言的话还是存在一定互通性的,我第1个入门语言是C++,之后因为有一些项目的需要,后面还去学了一些简单的Java,Python,甚至JavaScript,USACO在你有C++基础之后,相对来看都会简单很多。
从我申请的角度来谈看,NOIP和(USACO)Platinum它其实有一些细微的差距的。
因为如果你的竞赛能走到NOI的级别的话,相对于国际上的学校来讲,这个奖的知名度和认可度会稍微高一些。但如果只有NOIP的话,他们可能就没有这么熟了,反而会觉得USACO的Platinum的可信度是高一些

 

 

06

给要入坑的学弟学妹的一些建议
1. NOIP和USACO的铂金组都是属于竞赛级别了,这意味着你需要花大量时间来投入。我之前也有和Rock老师聊过,大概200个小时可以到黄金。我每周备赛时间是10个小时,学了一年,一年是50周,其实就已经500小时的课程量。
 

我,从一个算法菜鸡选手到USACO全球前100的心路历程

USACO相对来说好一些,因为在Gold级别之前就是基础的入门。就NOIP如果换算到铂金组的话,你在黄金组之前其实就是一个非常基础的算法了解,它甚至和竞赛没有任何关系。
2. 如果大家是决定了想学CS,或者已经开始准备了,USACO铜组银组的内容是无论学什么CS,比如你去当一个写码的programmer,或者你去做算法,做机器学习,做任何东西都要学习的东西
3. 尽早的去了解自己到底适不适合这个东西。因为CS其实在美国还蛮火的,火的原因一部分是因为他工资很高,但换句话说,它也不是每个人都能做的。如果每个人都能做的话,他也不会这么火了是吧?所以大家可以尽早的去了解一下。如果自己在算法方面走得还不错的话,相对来说计算机科学或者以后的算法相关的机器学习,这些东西是会稍微容易一点的。
 
我,从一个算法菜鸡选手到USACO全球前100的心路历程
我在康村观察到许多大一工程学院的学生,表明了要学CS,但一半多的学生,最后没有在CS走下去。一个可能是因为康村CS确实还是不错,讲的还是挺难的,第二个是很多人没有基础,他并不清楚到底适不适合这个东西,试了这么半年甚至一年或者一年多的时间,他才会发现,其实我真的我上不下去这课,最后再来换专业的话,其实是很花时间的。
4. 如果你确定要继续往下走的话,从黄金走到铂金的时候,你甚至进NOI的话,在你申请学校的时候,你才有可能会申请到一个CS专业排名来说,相对来说不错一点的学校。
5. 单从效率上来讲,我觉得USACO总体来看,肯定不是你对申请来说投入产出比最高的一个。因为我之前已经给大家算过的,时间投入真的很大了。但是天下没有白吃的午餐,你越容易拿到这个东西的话,它的含金量就越低。它的含金量越高,可能就越困难,这是一个tradeoff。
 
我,从一个算法菜鸡选手到USACO全球前100的心路历程
 
大家根据自己的情况,需要选择一些东西,如果你发现自己确实不适合,或者时间不够的话,用这些时间去拿一个建模比赛的奖,其实也不是不可以。毕竟申请的话,那10个奖里面不说填满了,好歹还是得填7个,建模这个奖有什么用,我确实不清楚,但有一个肯定比没有好吧。

我,从一个算法菜鸡选手到USACO全球前100的心路历程

转自:https://mp.weixin.qq.com/s/oGHa48f5hSTjOvzWxIN-uA

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注