NOIP2015行记与数学菜狗的日常

  上周双休日,我校算法竞赛小组前去参加NOIP复赛。

  刚到门口就见到了Erwin菊苣学长,讨论了一番今年题目可能出的内容,然后其他人跟着源霸陆陆续续得也来了。其实前晚我背了所有图论基本搜索算法就指望能遇到一个图论水题……然而我背得东西直到DAY2也没有用上。拿着准考证和学生证,再一次感叹了一下华二校园的广阔与华美后,我们一行人进入了教学楼。就在教学楼门口,一个身形巨大的神犇拿着准考证经过我们身边,不知道是谁的哪句话引起了他的注意,只见他瞄了一眼准考证,说:“哦,我准考证号3001”。也许是神犇的豪气震动了我,我相信这天也许不会出现什么特别难的题目。

  可是事实并没有像我预料的那样发展。

  跟着人群走上了楼,在机房里坐下后,坐在我左边的机友(机房里的桌友)飞快地打开了C++的IDE,开始做一系列测试,而我却坐在那儿一个劲的让自己淡定淡定再淡定。监考老师解释完了规则,开始发题目的密码。密码纸上的字符难以辨认,一开始怎么改大小写都是错的。大概老师和大家都尝试了数十次后,后排一个女生突然说“老师,我试出来了!”然后指出了密码条上的错误。随后就听见四下发出了“屌”、“屌炸了”的声音。

  在这一段花絮结束后,老师开始发试题的纸卷,DAY1就这样开始了。开局我并不是很顺,做第一题根据题目写完判断条件后还是出现了各种错误,所幸调试能力还行,在前半个小时结束前做出来了。草草看了一眼第二题,判断直接模拟的话数据会卡二位数组,就直接开了两个长数组,循环更新数组的内容,直到下标和其值相等。朴素广搜。写完后发现可以做点剪枝预判,就增加了一个布尔数组,把不可到达的数据全部忽略掉。半小时做完。做完前两题,上个厕所,感觉状态不错,开始看第三题。我初步判断是动态规划,试着写了一下状态转移方程,感觉能成,就开始屁颠屁颠打码。选数据结构想了一会儿,最后决定开个record封装一下二维数组,然后专门写个函数求剩余牌数。然后写状态转移,最后开始写状态改变的实现。

  写着写着感觉不对了,顺子的判断实现丝毫没有思路。就这样卡了半个多小时,算上前面推方程、想数据结构花的一个小时,只剩下一个小时了。最后一个小时我挣扎了一下但是最终还是没能写完。我在最后十分钟的时候,赶紧点开了被动技能[骗分],草草写了个能过前两个点的算法。

DAY1就这样结束了。由于前两题比较水,当晚我也没有去做任何练习,只是复习了一下图论的几个算法就睡觉了。

  然后是地狱般的DAY2。一大早,母上把我送到了华二的门口,再一次感叹华二的广阔和华美后,我在门口又见到了Erwin学长菊苣。

  聊了一下昨天的题目,感觉今天会有图论。果不其然,看到卷子后,第三题就是。

  先不管它,肝了前两题再说。

  第一题,恩……恩……这什么鬼……!

  没想到什么好方法,直接模拟又肯定会爆几个点,我抱着希望数据能水点的心态直接从FP库里拉了一段快排,就对整个数列的差值直接排序取n+1项输出。然后开肝第二题。一开始我以为应该挺好写的,从要匹配的内容出发,先拆成数个字符串,然后依次在所给的字符串里面找,每次找的时候从游标位置开始,找完以后更新游标。后来写着写着就发现编程复杂度太高了,于是我换了ansistring来,想直接用自带的字符串操作去实现。结果我试了将近三刻钟才试出copy这个函数的正确用法。
继续闷头写。

  看看时间,卧槽,还有一个小时……来不及了吧……

  再看看第三题,似乎不那么好骗分,于是我决定咬咬牙继续写第二题。结果没写完ORZ 于是第二题和第三题都是直接Randomlize然后Random(数据上限)输出的。

  DAY1估分100+60+10=170分

  DAY2估分10(事实证明我这道缺少了贪心之后的处理步骤所以基本拿不到分,但样例数据都过了……运气好可能能给骗到分……)+0+0=10分

  总计180分,看样子连二等奖都没有,只能来年再战了。

  今天源码都给放出来了,拿到洛谷上给民间数据一测,居然能240分。Erwin菊苣和我同分。

  能不能二等奖就看数据水不水了。

  另外,周一的数学成绩已经出来了。毫无意外的班级垫底……祝诸君剩下几门都能武运昌盛吧……

  UPD:擦线省二。