其实在北京比赛完的时候,我就想写了,不过还是早了点,直到上海比赛结束,大家的心中都不是太好受。郭老师有句话:你们这样做也是对的,不成功就成仁。让我的心也能安慰了不少。
我是从大一下学期开始接触ACM的,那时候我们学校才刚刚起步,siyee,wjiang师兄可以说是我的领路人了,冲名次,比做题真是一种幸福的感觉。
大二上学期很有幸与siyee队长,jack学长一起代表学校参加了比赛,那时候我的心情是很放松的,对自己的目标也是ac一道就万岁:)这也是今年我对windsbu说的话。毕竟那时不是队长,所以对我来说,最重要的就是完成队长布置的任务,其次就是在比赛中做出一道适合自己的题目。去年的最好结果是学校排名第九,大家虽然有种遗憾的感觉,但是毕竟是进步了。
到了大二下学期的选拔赛,涌现出了好多人才,很多人都很有能力,但是有一点最遗憾的是:许多人接触的比较晚,可能是因为热身赛或者选拔赛才了解了ACM,而我们学校的ACM训练只是一个课余的活动,不能与许多学校专业的训练来相比。这样的结果是,缺乏底子好的老选手,即使出现了有很强能力的同学,也不能在极短的时间里使他们达到一个相当的高度!
经过了暑假的集训,学校在队伍人选上很是下了一番功夫。从队员到队伍,无不精心研究。可能连统计学的许多知识都用上了:)
最终很高兴能够与codecpp,wind,组成了jojer队,开始我是不太好意思使用jojer这个名字的,我害怕对不起这个名字,所以先暂时叫做j2吧。由于经验少,刚开始训练的时候有一种摸不到头脑的感觉,许多时候知道有问题,但就是不知道该怎么解决,walkoncloud老师就曾经批评过我:你们队伍就是一个“神经病”带着两个“小神经病”一起“神经病”。这当然只是一种玩笑,但是确实是我们队伍初期的症状,什么事情都没有章法,这时候我们只好使用最原始的方法:讨论加总结。每次比赛结束后无论题目简单与否都要首先将所有题目讨论一遍,将做错的,不会的都分配到人继续将它解决。然后大家单独写赛后总结,交到我这里,在经过分析后,再开集体会议,批评+自我批评并制定下一步策略。用我的话说:这种方式挽救了我们,让我们在极短的时间里磨合了起来。
我们队伍最后的分工是:
wind主要负责读题,读题时要将重点难点标记出来,构想出初级的边缘测试数据。并主要负责计算几何以及一些需要推理的数学题目。
codecpp主要负责1-2简单题目,1到中档搜索题,以及编译方面的题目。和wind对边缘题目以及简单题目形成互补,以及调试上的帮助。
fennec主要工作是对wind,codecpp读过的题目进行分类,分析,对简单题目直接决定分配的人手,对中档题的复杂度,题型进行准确分析,引导思考方向。在有时间的情况下组织对较难题目的深层讨论。
我想最后我们还是基本实现这几方面内容的。
具体到了比赛,首先就是网上预赛:两次比赛感觉是发挥了自己的能力,这也算是队伍第一次最严肃认真的比赛了,大家都很尽力,光从赛后东方饺子王的战绩上就能感觉到!
在北京赛区,我们很快的作出了三道题目,但在后面wa在了两道题目的上面。这没有什么太好说的,我们队伍这时候最大的缺点在于对于wa题目的处理。但是最后还是因为罚时少,取得了学校排名第七的成绩。这也是一个可以接受的成绩。
从北京回来就有好多是要做,接连的补作业,以及期末考试,将训练计划打散了不少。这也是很正常的,毕竟在学校和老师看来,学习是最重要的,我们不是培养一个ACM机器。
在上海的比赛就有些不尽人意了,一是疲劳,二是对题目难度缺乏正确的估计,三是一开始比赛的时候就有些乱套,四是没有专心地做一个题,结果都没有做对。但是很多问题都是因为我在大局上把握的失误,我也感觉很自责,不过一切都过去了,希望后来人能够吸取教训吧。
我想对未来的同学有几句话要说:
1 我们几乎没有noi上来的队员,大家只能依靠后期的更加刻苦的努力。
2 我们没有专业的班级或者机制形成职业ACM队伍,所以大家只能尽早的投入进来,用尽一切课余时间去训练。
3 我们不能在数目上和传统强队比拼(除非队伍中的三个人都很强),所以我们要在中低档题目的ac时间和正确率上下功夫。
4 不要抱怨什么,你所要做的就是尽力发挥自己的全部,并在发现问题后努力改正。
5 不要懒得动手,许多题目你觉得自己方法对了,或者怕麻烦就不写了,这是一个最大的缺点,在比赛的时候你可能需要用2-3倍于别人的罚时去做出来。
6 不要只是追求ac数目,作出一道不会的题目胜过做出10道已经会的题目。
7 多交流代码!不要只是闭门造车。
8 养成良好的代码习惯。
9 在平时做题的时候就养成紧张的好习惯,不然在比赛的时候你会很吃亏的!
关于比赛的感觉:最重要的是四个字:天外有天
而对于真正想继续从事ACM事业的同学,我有以下建议:
0 首先了解C/C++,以及数据结构。
1 首先在joj做够50题,这是基本的热身
2 看一本算法书,清华紫皮的感觉简单点
3 在继续做够200题,这时候应该在输入输出上不会出大问题了,并了解了基本算法。
4 看看吴文虎,以及沙特的那本书。
5 在joj做够400题
6 这时候应该能够出山了,可以参加几次各类的竞赛
7 去uva分类做题,这时候不要再在意你的题目数目了,要有目的的,分类训练了
首先可以是动态规划,然后是搜索,然后再是动态规划,然后再是搜索…这种循环往复的方法,并加以总结,会是你自身提高最快的时候。建议一定要作总结,可以参考我后面的例子。(另外一定要用好uva的论坛功能!)
8 在uva训练200题目的时候,可以考虑一些典型代码算法的东西了,如网络流,poly计数,匹配等等。并把这些算法做成模板!并且要加强自己的理论修养了,看看离散数学,组合数学,概率论等等数学方面的东西。
9 总题目到达了1000的时候就可以查缺补漏了,这一段主要以套卷为主,将每次自己不会的题目搞懂就好了!并要适应比赛的节奏!
10 在题目到达1100-1500的时候,算是小成了。这样的同学就应该能够胜任队长了。
11 剩下的只能靠自己了:)