关键词: ACM 北师大 2010 校内赛  总结 0.o_stO_(*^_^*)
 

一点半正式比赛开始,拿到题目后,我们原本打算按珠海赛的计划分工读题,无奈看见水题实在是顺着排的,导致我们不得不集体看前面的题目。当时自己拿到题扫了一眼目录,看到“二叉树”三个大字,以为CC老师出裸题,于是立马开始读题,让刘晓佳和石文辉研究其他送气球的题目。
这时候辉哥读完A题让我第一个敲,说是可以壮士气,于是我在完全没看过题目的情况下听辉哥讲完就敲了,hash查找A之。
之后继续攻E,题没读完晓佳和辉哥就说已经确定了B的写法,于是再次不用读题,听辉哥讲完就敲了。取出qsort模板,瞬间A之。
提交B之后继续攻E,题目读完发现不是裸题更明显不是考二叉树,而我一看到是数学题,又本能的想先放一放,于是改读F题。这时候晓佳明了C题,于是换人敲代码,似乎敲得挺慢条斯理的,导致我们另外两个人也悠哉游哉。这时候我已经决定攻F,辉哥研究D题。经过一段时间之后晓佳说C过掉了,我抬头看表,切前三题用一小时,时间充裕。
F题读完之后,粗略规划了下算法:构建N叉树,因为对树的最小染色数就是二,解法便很明显了,对树做层序遍历,分别求出偶数树深和奇数树深的节点数,枚举与价格的乘积即可。算法确定之后,又考虑到此题不是给09的做的,保险起见还是等队友把基本题目都过掉再写好了,于是转身问辉哥D题的进度,辉哥说有想法但是比较麻烦。我觉得模拟题虽然麻烦但应该一两个人就能应付了,于是叫晓佳和辉哥一起考虑D题,而我则另外去考虑E,结果这个决定铸成本次比赛第一大错,以后有教训了。
看完E题,用稿纸模拟了几个深度,仍然找不出规律。我也不确定是存在递推式还是有直接的f(a,b)。这时候我看了下两人的情况,他们已经开始敲D题的代码,但是敲得很慢。于是我问他们这题有完全的把握没有,他们说还好,试一下。听完这句话我就大概猜到麻烦了,因为两人是很少这么说的。但因为我也没读过题,所以觉得也许真的是很麻烦的模拟题,想到辉哥平时模拟题的正确率的确比我高,于是交待他们一定要想清楚了再写,然后就考虑我的了,这时候一个半小时过去了,两边都不太有头绪。
大概再过了十几分钟,我看看表,问辉哥什么情况,辉哥说写完了但是样例调不过,于是我让晓佳过来和我一起考虑E题,中途试敲了一次O(n)的逆推,预料之中的TLE。
再过了十几分钟,E题毫无头绪,于是我不得不起来看看其他队伍的情况了:大量09的队伍通过了D题!不得了,一个小时过去了而我们的队伍一题的进度都没有!看看辉哥,辉哥似乎还是没找出错误,于是我决定有必要开新题了。因为E题实在没有头绪,所以我决定留给数学功底好点的晓佳继续想,自己开始在草稿纸上设计F的代码。结果边写边发现这代码实现起来远没有我想象的复杂,十几分钟就写完了很短的完整品。这时候我要辉哥开半个屏幕继续查,而我就把F的代码敲上去,敲完之后测试也一路顺风顺水,于是在两人的怂恿下,拜了拜曾哥就交了。三十秒之后打开界面,一个绿油油的YES!!!
这个YES可谓我们队伍的转折点。
不能不说,F题的AC让我们队伍信心大增。我这时候终于可以回来和两人一起攻D了,这时候比赛已经过去了三个小时,中间有一个小时的时间是一点进度都没有,而有将近半个小时的时间(也就是我手写F题的时间)我们队伍的键盘是闲置状态!对于出现了这种情况,我知道是自己安排分工失误造成的,我应该承担责任。
静下心来细读完D题,一看这个结构,第一反应是用数组队列或者指针链表做,再稍微细想了下代码的实现,发现确实不算复杂。而最重要的是两人如今的程序已经被调到不堪入目的样子了,于是我提议让我重写D题,这时候还有45分钟。
十五分钟后写完单链表的做法,开始调试。第二组数据卡之,从头想了一遍思路,确认没有错误,于是开始排BUG。最后发现数字与串之间的空格没有冲掉。改完再测,这时候诡异的情况开始上演,单组测试数据输入的时候无误,但连续输入的时候就会出错!症状诡异到无法从字面上看出错误来,于是不得不下断点去跟踪,费尽一连串无法形容的周折之后,辉哥发现是我把表头free()掉了两次。改之,希望降临。
这时候看看表,17:17分,还有十三分钟,晓婷能不能看到我们拍方大同回来,基本就看这一次提交了。于是在晓佳和辉哥的注视下,我确实是手有点颤抖地点下了submit……
在那十几秒的时间里我们三个人把曾哥春哥佛哥都拜了个遍。
最后的最后,那个“D Judge YES”,带给了我们三个人第二声发自肺腑的尖叫。
 
--------------------------------------------------------------------
这次比赛下来,有好有坏,好的方面就是,我们队伍的正确率是百分百。联想到自己做英文题目时的悲惨情况,就能得出一个清晰的结论:\
 耐心*[明了题意+(清晰+完整)*的思路]=AC。
当然这次比赛下来也暴露了很多的问题,首先是我们的人员分工中途发生了不合理的现象,导致键盘被完全闲置了半个多小时,我太过于执着自己的两道题目,而没有顾及队友,使得两道题目在最后一个小时才先后被过掉,在时间上已经输掉了不少。如果当时自己先放下E题去帮忙看D,我们队伍的总耗时绝对不会是现在这样结果,而且还能有更多的时间去考虑别的题目(其实在最后几分钟,晓佳在看完H题之后,很认真的告诉我,她在当年高中的数学试卷上做过类似的问题……  Orz )!!!
  然后是关于出错调试的问题,这次队伍在D题上的调试值得商榷,花掉了太多的时间并且始终没有调出原因来,这一点我们全体队员都有责任,今后再遇到类似的问题时,必须得懂得果断重写了。
 其次,自己在数学题上的发挥也十分不好,一开始就产生了本能的逃避心理,实在是不应该。我也知道数学题是可以拉开排名的题目,以后自己一定要下更多功夫在这上面了。
最后自己得出的一点教训就是,即使是ACM的比赛,个人英雄主义也是无益的,队员的最终目的应该是要让队伍的整体成绩更好,而不应该纯粹为了让自己发挥得更出色。
以上各点,自己今后一定谨记。