11月22号的上海赛区比赛是我第一次参加的ACM区域赛。这次比赛给我留下了一段难忘的回忆。
19号下午我们从武汉出发,我抱这送给老婆的布娃娃,坐上了去上海的K12次列车,这是我第一次去上海。想到就要参加比赛,而且就要见到老婆,我很兴奋。路上比较无聊,我就看具体数学打发时间。
20号早上到了上海,我见到了这个国际化大城市,感觉跟武汉区别不是很大,就是房子高了些。我们住在良安大饭店,是一个比较高级的饭店,Snoopy坚持要跟我住一起。我们安顿下来以后,洗了澡,第一次洗泡澡很舒服,躺在浴缸里头感觉很放松。洗完澡我们Silence队聚在一起讨论了一下比赛的策略。晚上睡得很好,呵呵,比梅六的垃圾宿舍不知道好了多少倍。
21号练习赛,不怎么正式,先是开幕式,一大队人上台讲话,然后是教练会议。我向来对开会比较反感,就坐着无聊了一会。中午在上海大学食堂吃的饭,垃圾。然后马上就是练习赛了。我看到北大的cici,长得好高啊,比我高,而且挺漂亮的,不由得羡慕一下她老公。练习赛比较乱,系统是FC6,我们一进去拿到题目,按照惯例,我看前面,ooeyusea看中间,magiii看后面。第一题和第二题超级简单,我一个人搞定了,剩下一题很难,我们想出了算法,可是难以实现,代码复杂度太高了,于是决定放弃这一题。PC^2出了问题,一直登不上去,我们写好的代码无法提交,后来我叫了staff,终于能登上去了,马上交,都是一次Yes,但是由于交得太晚,排在比较后面。不过无所谓,练习赛不要紧,我特地让ooeyusea和magiii都上去熟悉了键盘,因为平时比赛都是我写的最多,我怕他们不熟悉环境,万一明天出问题就不好了。交了这两题以后,我们写了一些第三题,最后发现我们无法完成,就转去测试judge。无聊了一段时间以后,练习赛结束了。
接下去是sun的讲座,更无聊。但由于sun是下一站西安的赞助商,也没有办法,只能听啦。magiii继续在机上熟悉环境,我搬了张凳子去听讲座。都是些广告,送的礼品也很垃圾,是java的玩偶,我看做工太挫,也没欲望去抢答问题赢得奖品了。最后我们每人填了张调查表,凭表去领了一件T恤。
接下去是晚宴。大吃了一顿以后Silence又聚在一起,我很明确地说,正式比赛的策略,就是努力把简单的题目做出来,先搞定最简单的两题,然后再想第三题。我知道我们的实力只能允许我们采用这种策略。
22号正式比赛了。我们很早就起床,到比赛场地发现来得太早了,等到9点50才放我们进场。很快比赛就开始了,我拆开密码袋,magiii拆开试题袋,按照惯例看题。我看前面3题,A题比较长,我先跳过,看了BC两题,都不怎么好写,然后看A,发现A是简单题,马上上去写。这是他们在看其他的题目。很快我的A写好了,第一次提交,返回RE,这让我大为惊讶。magiii看了一下,发现我打错了一个字,改过来又交,马上返回Yes。就这样我们拿到了第一个红色的气球。这时我看见前面清华的两个队已经做了两三题了,立刻刷rank,发现C.D过了两三个队了,I也有人过。我决定看C,发现是一个树,题目里头的数据比较吓人,其实没有那么大,我就上去写,很快又写好了,交,返回wa。我看了一下,发现数据范围是long long,而我用了int,马上改过,又交,又是wa。这时,我已经找不出我程序的错误了,接下去是我们的恶梦……magiii的D一直徘徊在TLE和WA的边。我反复提交自认为没错的C,甚至还写了两个程序去测题目给的是不是树,结果返回的确是树,更加让我确信我的算法的正确性,可是提交就是wa。然后magiii暂时放下D题帮我看C,测了一个long long的数据,马上发现有问题,我才知道原来是abs函数的问题,它返回的是一个int,而不是long long。我就自己写了一个abs,提交,终于返回了Yes。第二个气球来得很不容易。我又刷了rank,发现D和I是我们有希望搞过的,就分配任务,magiii继续写D,我和ooeyusea看I。过了一会儿,magiii艰难地把D写过了,插上了第三个黄色的气球。全队的注意力都集中在I上。这时离比赛结束还有1个多小时,我说,我们还来得及,大家全力以赴搞I。I是一个关于杨辉三角的数学题,我画了一张大的杨辉三角以后,发现在几何上这个题目是个分形。我就大叫,是这样的,然后把图画给他们两个人看,又让magiii写了个小程序打印杨辉三角,以求得到更多的信息。然后我就一直构造I的递归解法,可是一直有些问题,ooeyusea也一直在考虑这题。在一直没有进展的情况下,我又刷rank,发现I题过了很多人。这时我很急躁,拼命地考虑我的算法的问题,时间一分一秒地流逝,我没有任何进展。大概剩下40分钟的时候ooeyusea上去写他的算法,过了样例,大家都很高兴,交了一次,返回wa,接下去的时间简直是地狱,我们一直修正ooeyusea的算法,不断地提交,都是wa,大家都很着急。我已经进入了盲目提交的状态,觉得有疑问的地方就改一下,然后马上提交。这样一直持续到最后3分钟。ooeyusea忽然发现他的算法不能处理p=2的情况,在时间非常紧迫的情况下,我修改了他的程序,加上了p=2的情况判断,最后交了一次,还没有返回结果比赛就结束了。后来证实那个判断是错的,分形的算法是可行的,但是ooeyusea的程序有些问题。
比赛结束以后我们回到饭店,我老婆来看我,抱到了那个布娃娃。第二天我们上街逛了逛,老婆要上课,回去了。我们也回到饭店,下午就坐上了离开上海的火车……

总结这次比赛的经验,Silence作为一支不成熟的队伍,第一次参赛,能取得这个成绩应该还是不错的。但是这次比赛让我看到了Silence的许多不足之处。最致命的就是在比赛中比较急躁,想出算法了写下来,除了通过样例,没有经过其他任何测试就疯狂提交,这造成了我们罚时严重,而且对一些特殊情况完全没有考虑到。如果我们较早测试了I题p=2的数据,就会发现算法的问题,很可能就会把这题做出来。如果我测试了C题long long的数据,很可能一次就通过了,不用交8次。如果magiii测试了他的D,也许能减少几次提交。甚至如果我写完A,不用急着交,测试一下大数据,就能够一次通过了。可是没有这么多如果,比赛已经结束了。我认为,这个习惯是平时练习赛时我们不注意罚时养成的。平时内部训练只有三个队,主要区分是在题数上,我们就轻视罚时,但是到了大型比赛,罚时就是很重要的了。说什么都没用,我们要做的只能是改掉这个坏习惯。还有,事后听snoopy说,I题在具体数学里有相关公式。Silence队中我负责看具体数学,没有发现这个公式是我的责任。我应该更仔细地研究具体数学。

 

posted on 2007-08-13 10:25 Felicia 阅读(554) 评论(0)  编辑 收藏 引用 所属分类: ACM/ICPC 纪事

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理