今天有Warmup,特意翘了实验,留在寝室享受ACM。
昨天做实验好累,早上有点爬不起来。想了想,决定不吃早饭,因为我知道自己空腹的时候更容易兴奋。发现离9点的比赛时间还有点距离,就玩连连看热身。
比赛开始了。我按原计划先看第五题(总共五题)。好像是从校赛开始,我就发现最简单的题目往往出现在最后,所以我的看题顺序是最后一道->第一道->第二道->……->倒数第二道。果然,是道简单题。于是我开始coding。当时真的很兴奋,键盘被我敲得铿铿作响。10min的时候,我submit了,wa了……一看status,我居然是第二个提交的,第一个是javaman,5min。ym!我稍微改了一下又交,又wa。然后发现此前javaman又wa了一次,前四次提交居然被我们俩全霸占了-_-b
这个时候,我做了整场比赛最英明的决定,换题。可能是warmup 1 的教训吧,我知道这种看起来简单的题目,在cyjj手下就会变成坑人的题目。我开始看第一题,发现连sample都看不懂,又换。二、三、四都是fatmouse系列的题目,据说这个系列的题目都不好弄。只可惜我从来没有做过fatmouse系列,本着初生牛犊不怕虎的精神,我居然觉得第二道能做。此时是20min,我一看,第五题已经有20次的提交量,却是0 AC。我乐了,知道自己判断没有错。
第二题是道数学题,第一个sample很容易就过了,但描述边界情况的第二个sample可不容易对付。我清晰的记得那个时候下着雨,因为我站在阳台想了好一会儿。我最后判断这是线段和圆的关系的问题,又开始coding。难度确实一般,但烦死了。然后是debug,再次出现(double)=(long)/(long)的精度损失问题,用强制转换改掉。终于过了所有sample,提交,wa。我把小于等于改为小于又交了一遍,还是wa。这个时候,大约是75min,javaman居然已经AC了三道,分别是五、四、三。而且三和四都是10min秒掉那种。我晕,难道我又选错题了?细看status,发现只有javaman一个id有AC,其他人都没有过题。第五题好夸张,有40几次提交。第三第四题比较零星,第二题就我wa了两次……
这个时候无疑是最困难的时候,虽然手上有两题的code,但形势不容乐观。我最后还是决定继续攻第二题。又在阳台站了会儿,回去加了一句if,提交,居然返回了一个鲜艳耀眼的Accepted!我当时就在凳子上弹了起来,高呼AC了,AC了!实在太不容易了,居然有一题是我先打通的。看了一下status,现在是90min左右,自己是第二名,二三四五题都只是一个人过。
士气大振,开始看第三题和第四题。第三题是图,有想法,但觉得比较麻烦。第四题是典型的LCS(longest common sequence),是道DP(dynamic program),我虽然看过解题的代码,但没有信心写出来。大约还剩下80min,我觉得自己最多能再AC一道,于是选了第三题来code。写了一小段就觉得不行,一个是体力开始下降,有点想不清楚了,另一个问题是数据结构没建好。发现又有一个人过了第五题,于是转回去改第五题。
我原来用的是long long。我自己很不喜欢用long long,因为在vc6下没法调试。再看了一下题,发现储存用long 就够了,运算才需要用long long。如果先除后乘的话,用double就可以了。但double的数组在main内开不了,如果放在外面的话,调stl 的qsort不好用(我土了,后来才知道全局量也可以作为参数传入函数的)。又一个很好的想法冒了出来,我用long储存,在运算的时候先用一个double的参数打二传,解决了这个问题。
还是wa,这时候zachary在旁边莫名其妙的喊了一声除数为0。我看了一下题目,发现没有说过数组大小n一定大于0,只是说小于0的时候当作退出。于是我加了一句n为0时输出0,还是wa。这时候已经是150min了。我和zachary都觉得没什么戏了,开始讨论(这几乎是一种默契,当还有题目可以做的时候,我们谁也不吭声。如果已经到了垃圾时间,但比赛还没有结束的时候,我们就会讨论一下)。
我说了对n等于0时候的处理,他觉得输出0也不合适,于是把那句话删了,又交了一次,居然是PE。我们欣喜若狂,马上改成输出回车,AC了!因为刚才用的都是我的代码,他立刻回去改自己的程序。这时我突然发现比赛时间延长了,变成3个半小时。他AC了第五题之后,我给他大概讲了一下第二题的题意,然后就去吃饭,因为半个小时实在是什么都做不了。回来的时候发现他没有过,后来他抱怨说我讲题没有讲清楚-_-b
最终ranklist是javaman 3道(他在两个小时的时候被导师叫出去了),我2道(第二题就我一个过了),还有三个人是一道的(总提交人数11个)。
后来我们几个人讨论的时候,都对我10min换题的策略表示赞赏。我觉得这个东西要具体情况具体分析的。因为我猜到cyjj出题的风格,觉得这题目有陷阱,我才换的,如果同样是简单题,已经有人轻松过了的话,我肯定会继续做下去。另外,javaman居然说他三、四题都是贴代码的,所以很快就过了-_-b
今天最重要的收获还是自信,在之前,我实在无法想象我会在某道题目先拔头筹。这对我以后的比赛真是很大的鼓舞。