ZZ五、穷则思变
发信人: dwyak(Arthur), 信区: ACMICPC
标 题: 五、穷则思变
发信站: 饮水思源 (2007年11月18日14:20:47 星期天), 站内信件
http://tttttc.spaces.live.com/blog/cns!75F098439AE33731!220.entry
短暂的欣喜过后我们要面对的是将要到来的总决赛。那一段时间我还要为我自己在系里
招惹下的一段不光彩的事情接受着深刻的教育。但愿这也是我这辈子犯下的最后一个重
大过错。而那一段真诚忏悔的日子让我明白了对待错误的正确态度: 坦然接受批评,认
真寻找自身错误,不背包袱,不带心理阴影,正视错误的自己。然后是拉下的作业、课
程、期末考试,本科生活永远都不能回避的一些东西。而其间我们隔三差五的进行训练
,由于前期的训练都是我和timeexceed大老远的跑去本部,于是这一段时间则是jellyfi
sh大老远的跑来闵行。老队员表现出来的风格多半都在年轻人没有注意到的细微之处。
没有所谓的教练和裁判,也没上网的条件,我们只是自己抽一些题目来做,然后也许就
是互相评测一下。
寒假的训练则是一段难忘的经历,我和timeexceed住在了教三四楼的java机房。在我的
印象里,每天都是两场训练,一场是早上开始,到下午两三点钟,然后我累得不行就去
睡觉,起来后吃晚饭,晚饭后接着训练,然后夜宵,然后睡觉。时常我在六点的时候醒
来,梦里还在做题,天总是蒙蒙亮,而我却总是分不清清晨还是黄昏。训练的效果仍然
不算理想,但是有了几点进步是明显的。首先我们得到了几个结论:1机时是一场比赛中
的重中之重;2 jellyfish绝对有能力很好地完成模拟题;3 timeexceed的成功率完全是
能够提高的;4 这是我个人的感觉,我们跟清华的差距是一道题,并且是完全追不上的
一道题。
这几点是重要的,说明我们在一定程度上对自己的认识开始深刻,并相应采取了可以看
到效果的措施。此外VAC的难以使用也促成了我们至为重要的第一条措施,那就使用Ultr
aEdit作为我们的IDE。这一切其实都是四个字:穷则思变。困境是时常遇到的,如果总
是顺境那就没有了提高和改进的环境,从某种意义上来说是一种更大的困境。于是,重
要的事情是在困境中要穷则思变,要发现问题的所在,并提出切实有效的措施。这样的
措施要便于执行并且便于观测执行后的效果。那条简单的措施带来了很多变化,第一是
机时被节省,因为根本无法调试,于是那些不知底的调试时间都被省了出来;第二是长
时间的读代码差错使得我们每个人的代码实现能力又不自觉中提高了;最后一点就是我
们开始意识到这样的训练使得不再害怕于使用任何的IDE,只要它具有代码缩近的功能。
最后一点在后来被我重新的认识,那就是一支真正的强队应该在任何外界的环境发生巨
大变化的时候,它依旧处变不惊。而经过那样残酷的训练,IDE的变化对于我们那样的
队伍而言已经是一件很无所谓的事情了。
由于机时是重中之重,那么除了在训练的时候增加措施来进行机时的保护,在赛场上也
要有一个相对的指标来衡量和控制。我们当时的标准是考察代码量,最为核心的标准是
三个小时的时候是否有4-5题的代码。这个标准在后来的几年几乎可以被后来的众多队伍
耻笑,但是在与当时却是非常实际的一个标准。理由非常简单,这个标准我们勉强能达
到,而同时这个标准已经能够达到一个比较好的成绩在其他的一切比较顺利的情况下。
简单的分析一下那些年的冠军大多数是6道题,而某一次是7道。试想我们如果能在3个小
时完成4道题的代码,并且能够很好的保证这些代码的正确性,至少是有效性;那么在剩
余的2个小时之内,我们完全有机会完成2-3道的代码,也就是说从代码量上已经可以接
近顶尖的水平。之所以在未来的若干年里,这个标准被狠狠地打破,我个人认为这是一
件水涨船高的事情。
Jellyfish对模拟题的能力的把握性直接带来了战术上的一些灵活性。这使得我在早期的
时候能够腾出一段时间来好好地把握所有题目的难易程度,并且某些题目可以在准备之
后在上机,从而也提高了我的成功率和使用机子的效率。此外,这让我在后来训练中意
识到另一句重要的事情:很多队伍都忽略模拟题,由于它显得不是那么“有趣”“有挑
战性”,然而事实上它和其他的所有题甚至是最难的一道题一样:它是一道题,它是可
以插起一个气球的一道题,无论气球是哪种颜色的。而且,越是想拿好成绩的队伍事实
上越该注意提到这方面的能力,就好比球赛中有所谓的“机会球”,也就是人人都能得
分的球,这类题也恰恰是这种,只要你愿意在训练的时候去写那一行行的代码。
Timeexceed在队中的工作在多年以后给了我更加深远的提示。他在队伍中负责不多的代
码,然而他上来之前一定是经过深思熟虑,并且在纸上很好的准备过的。这样的意义在
于节省机时。事实上,由于我现在思考了很多关于调度的问题,我去回想这个问题的时
候认为当初这样的策略其实是全队去完成这样一个战术上的目标:把机时尽量的腾给我
。当然这样的结果是我必须去负责解决掉更多的题目和代码。于是,为了满足这个战术
目标,他们两个负责读掉绝大多数的题目。此外,甚至为了节省一点点的调试时间,tim
eexceed还要任劳任怨的在一旁笔算某些题目的测试数据。这其实都是一些没有什么成就
感的繁琐活。而于我最大的感受就是什么是teamwork:有着明确的目标,明确的战术,
相互之间有着明确的共识,分工和信赖,然后为了那个明确的目标,每个人承担自己所
该承担的任务,扮演自己所该扮演的角色。
此外还有很多细节上讨论和进步,就好比相互讲题时的原则,赛前画表格的作用,等等
,诸如此类。还比如为了讨论timeexceed是不是适合去完成第一道题,我们也是一遍又
一遍的尝试来得到最终的结论。
其实这是一个最为艰难的时期,而这个时刻也是我学习到最多的时期,或者说积累最多
的时期。在那个时候我不知道很多道理,但是在jellyfish和timeexceed的帮助下我得到
了很多的感受,在我们那支队伍取得某种意义上的成功以后,那笔财富慢慢的显示出它
的价值,尽管交大日后的每一支队伍跟这一支都不一样。也许没有Jellyfish的那句话“
任何技术问题都是可以通过管理的方法来解决的”,我会一直认为只有找到三个跟cl,
wxl, zzp那么强的人的时候我们才有机会填平那一道题的差距;而事实上,在后来的两
三年我们追上并超越清华靠的完全不是个人的实力。
太多太多的事情,在发生的时候我们并不理解;
太多太多的道理,在我们理解的时候只能回头去感激生活。