NOIP2016 游记

前言

距 NOIP2016 结束已过了一个月之久,此时再写游记也未免太晚了些。但是,考虑到省内名次名单发布的时间较晚,故此篇游记虽然在 KikiDMW 大神一再催促下一拖再拖,也终于迎来了获奖证书发布的时节。省略去长篇的废话之后,我们直接进入正题。

Day0

此番前去合肥,终于我们高中不再与兄弟学校同车了。毕竟,和一群拿过 NOI 金牌的选手同坐于一辆大巴上,甚至其中还有一位拿了 NOI 第一的选手,这种感觉让我们太不是滋味了。(旧时王谢堂前燕,飞入寻常百姓家)

在合一调试机器的时候,发现新系统确实也不怎么样。GUIDE 的自动补全功能使得键盘几乎无法输入,在创建文件时复制文件名会死机的问题还是没有解决。听闻 gdb 调试不可用,不过我一直有输出调试的习惯,这点也就略过了。

Day1

打破了以往密码有意义的传统,今年的密码让整个考场的人都头疼。由于投影仪无法工作,监考教师被迫将密码写在纸上一个个传阅,时间过长,但还不给延时。

看了一遍 T1 后,我实在难以想象出题人会出如此水的水题,这导致我又仔细地将题面看了几遍,然后打了 100 分的代码。实话说,我还真没发现那几个人有问题。

D1T2 估计已经超出去年 D2T3 的难度了。我看过题面之后第一个想法就是树链剖分,但我实在想不出树链剖分之后有什么用。最终还是打了 45 分的暴力,没想到数据一点都不水,一分都没多。

T3 考了数学期望,这是历年来绝无仅有的。这道题动态规划是肯定的,关键是动态转移方程比较麻烦。写完 Floyd 之后,在考场上我一直在想如何列转移方程,却忽视了思考数学期望的公式,导致这道题没做出来。没想到,一个连样例都没过的代码能拿 4 分。后来才发现,那个数据点的标准输出是 0.00。

后来回去和同学对了一下,发现 T3 的数据点太弱,暴力搜索都能拿 80 分。同样的,T2 树链剖分也能拿 80 分,但几乎没人写得出来。看起来,第一天估计分数有点低。

Day2

T1 一开始以为是数论,打了一个 01 矩阵来研究了半天。最后发现数据过弱,直接杨辉三角加二维和数组解决。快交卷时,才发现代码有可能 RE,还好及时改正了。C++ 不能返回指针越界的特点太坑了。

T2 一开始想到直接堆维护加懒惰更新,后来发现只能拿 70 分。不过,整场考试中最坑的地方出现了,由于考虑到 STL 的速度太慢(其实是不会,也不想学,不想写),所以手打了一个堆,数据也过了。但是,自己评测的时候发现暴零了,仔细一看发现原来是一个地方的除号打成了乘号了。不得不说,我又被 C++ 不能返回指针越界的特点给坑了。

T3 没什么好说的,由于前晚刚看完《背包九讲》,一上来直接想到状压背包(其实想了大概半个小时)。然后慢慢码代码,码完之后拿样例测发现不对,再检查发现原来是一只鸟只打一头猪的情况没有考虑(这个点坑了我一个小时)。改对之后样例过了,不过我又在精度问题上纠结了半个小时,最后随便蒙了一个差值小于十的负六次方就判相等。后来发现官方数据没有特意卡精度,所以这个在民间数据上测连五十分都拿不到的程序居然 AC 了。

最后回去和同学对了一下算法,发现情况不如人意,T2 想到懒惰更新的人也不多,T3 就更不用说了,一直不明白神秘指令有何意义。

后记

结果悲剧,100 + 45 + 4 + 100 + 10 + 100 = 359,虽然在我省中是为数不多的 AC 了 D2T3 的人,但也是 AC 了 D2T3 的人中总分最低的人。后来发现,D1T3 做不出来的原因一部分是状态设的有问题,而 D2T2 的三队列做法仔细想也是可以想出来的。

怀着改善心情的目的刷了一下今年普及组的题目,随便写了一下也没验证大数据就提交了,马上就 100 + 100 + 100 + 85 = 385 了。

不得不说,今年的 NOIP 题目较往年有很大改变,数据点增加了很多,数据范围细化了,暴力能拿的分多了。最典型的例子就是 KikiDMW 大神,全场暴力,一题都没 AC 却拿了全校最高,创造了自我校建校以来的信息学竞赛上的一个奇迹。

看起来,明年省赛也不会有太大改观了,应该就是各种稀奇古怪的数据结构加上各种奇技淫巧的玄学暴力了。

你可能感兴趣的:(杂文)