查看文章 |
前言: 热身赛: 为了熟悉环境,我又写了两遍A,先是用dfs暴力,想必很多队是这么ms掉的;又用了dp,写起来也不繁,这样就当写过了三道题吧~后寒仔爽了一把比赛系统,其它我们也没干什么了,玩游戏打发了剩余的大部分时间。 正赛: 随着主席黄金雄的倒计时结束,比赛在十点整开始了。寒仔上去配机,我和shi哥先看题。 J有些长,先看H,迷迷糊糊没看太懂,看来还是紧张了,转而看I,给出两条直线上一些点,两点距离即为边长,求这些点的最小生成树。J是劲乐团模拟题,规则较多,但发现数据很小,直觉认为可做。 shi哥发现A就水题,讲了题意,16个点的状态变换,想让我或寒仔去写,也许是我有写第一题的阴影,加上题意没完全听懂,没敢接,寒仔便上去写了。他肉出了这个图的邻接表,结果每个点都漏了一条边,于是只好我在纸上加上,又再人肉check了两遍,费了好些体力。提交后WA了一次,我问了下题意后他发现错误,改后在第45分钟ac。不过此题有队10分钟就过了,我们的开局并不好。 之后shi哥自己在写B,我和寒仔互通了题意: C是给定字符串压缩的表示,问两串的第一个不同位置。此题一直没有想过,据说冠军队在最后几秒才通过,Orz... 我们讨论了下J题,一直没想好长条的处理方法,只能暂放。寒仔强烈感觉F题可以暴力搞,我虽不认同,却也无法给出个简单的反例,考虑到直接写的代码复杂度很低,便说不妨一试吧。 后shi哥的B题似乎遇到点麻烦,便与我说了题意,由于他已想了很远,说题意并没多大效果,直接说了方法,然后就发现了bug~提交后在返回WA的情况下,仍与我讨论完了J才回去改,在1小时50分钟ac。没想到快两个小时,我们才过两题;环顾周围,普遍也是两题,偶见三题和四题的,可见今天比赛的难度还是挺大的。 场上逐渐的IJ都多了,shi哥与我第二次讨论J题,难道这次比赛我从头到尾都在想J……后我把所有条件都告诉他,其中有一条是,“可以同时按下与释放”,shi哥马上提出对于散点可以贪心地一一判断按不按,我们就照这个思路想下去,用0表示松开,1表示按着,转移时先松开所有长条的尾键,再一一地按散点,再枚举新按的长条的头键,三个阶段,复杂度在1000*2^14。对于这种复杂度,shi哥并不乐观,先去想I了,我继续yy,并准备写。 I题他们猜测,每个点只可能与周围四个点连接,再求一次普通的最小生成树。ms代码并不好写,我便在一旁对J题进行最后的准备,肉了所有的样例,可惜仍然没有发现我们误解了题意,即任意时刻,每个按键的状态只能有一种,不能切换。直到I题在三小时1Y,太令人振奋了,因为这题正确性首先不能保证,加上涉及浮点误差其实不好写,很不容易。 后终于轮到我上机了,这一刻却也不那么紧张。谨慎起见,代码多处用了assert,看来是一个不错的选择,dp部分也用了常数可能较大,但更清晰的写法,保证不易出错。敲完后听见他们想写E了,便打印调试,等了好久才送来……发现错误改后,接着打印……由于送纸太慢,同时队友也在用机子,两次修改等了挺长的时间,终于才发现我们的方法连样例都不能通过。shi哥在写很麻烦的俄罗斯,无暇顾及了,我必须自己接着想出来;寒仔曾想帮忙debug,因为是方法错了,我简单说了下后,发现自己也说不清了,便说我自己来,本以为简单改下就行,但想了很久都没结果,渐渐有点慌了。眼看周围很多三题甚至两题的队伍都升起了J的蓝色气球,我们绝不能缺少J题!我也因此坚定地认为J不会太复杂,时限不会太紧,于是先想出个正确的方法再说。在状态转移时,先松键,枚举按键时分为短按与长按,估计了一下复杂度仍然约为1000*2^14,兴奋地上机写了。然后发现过不了样例,问过他们大概E题也需要上机调试后,我便先占着机子想一会儿,意识到长条的头键也可以用短按,稍作修改便过了样例,太兴奋啦!紧张地加测两个case后便提交了,然后返回yes,忍不住惊叫了一下……赛后fzu的wzc很谦虚地说,他们有一题的复杂度10^9也过了,我才意识到其实我也是这个复杂度=_=b,因为当所有键都是长条时,枚举转移的复杂度是2^14,总复杂度是1000*2^21!不过这是极端case,不可能每个case都这么特殊,而且一般的情况有效状态并不多;当然啦,最主要是过这题的队太多了,以致我放松了对复杂度的估计,我不相信连两题队伍都能过的题我们不能过。 过了J后,shi哥便可无顾虑地调E了。此时比赛只剩40分钟,我向寒仔了解下E的搞法,用到了set和链表来加速,挺复杂的没听懂。不过每个方块的四种旋转都是人肉出来的,这点值得商榷,因为即费时又易错,况且人肉去重对效率并没有帮助,后有一处错误就因为误以为L只有两种状态。大概因为用了链表和set,很难调试,便让寒仔用了gdb,很方便地找到了异常的地方。最后半小时我坐在一旁,发现帮不上什么忙了,只得暗暗为shi哥捏一把汗。想起训练时有好几次都是最后时间一直由shi哥在写很肉很繁的题,基本上都能调出,虽然有时会很艰难。但眼看着时间越来越少了,然后很不幸地在剩十五分钟时,shi哥发现算法有一处错了,要加一个线段树来处理,这不简直宣判了死刑?然后shi哥竟去卫生间,等回来时只有十分钟左右,他说先暴力地实现吧,然后在跑出正确答案后,又对着sample很仔细地检查每一步中间过程,直到确认无误后在剩不到3分钟时提交。当返回yes的一瞬间,我们真的太激动了,三个齐刷刷地跳了起来,周围的队伍都看了过来,心想他们一定很羡慕吧^^shi哥也很难得如此激动,甚至有些激愤,可以想象这题的调试让他多么的纠结。 于是我们就这样以平均一小时一题的速度通过了五题。由于遥望见清华队前升起的8个气球(Orz),我并不太乐观,但愿能拿个金牌吧。晚上领奖前才得知,前几名的题数大致是8,7,6,5,5,5,4,4,4……而我们只wa了两次,5题中罚时最少。虽然题数上相差巨大,这样的排名我们还是可以接受的^^。想想清华队三人个个都是条龙,而我们只有shi哥一条龙,有差距也是正常的嘛。这次题目大概也偏难了些,以致强弱分化太明显,12个金牌中从8题到3题,据说速度快的1题也能拿银牌……
今年的比赛算是结束了吧,从七月开始的训练,很充实,很值得回味……只是,当这些都成为回忆以后,不禁要问,下一次比赛(如果还有的话),将会在哪里,将会是何时呢?……
|


