NOI 2017 游记

NOI 2017 的记录。

Day -1

坐软卧从 YC 去绍兴。在妈妈的帮助下,背了一遍笔试题。现在还记得 Anjuta 的 continue 是 F4,Lazurus 的 run 是 F9。在同一节车厢碰到了 yp。软卧的环境较为舒适,但是久久难以入眠。

Day 0

yp 和我成了第一个报道的,和第二个报道的……去的时候工作人员还没有到齐。志愿者一开始把我们指向了志愿者报道的地方。

到寝室之后开始睡觉……Zzz 新校区的环境比旧校区好多了,也比去年南山好多了。独立卫生间,可供两人同时洗澡,且彼此看不到对方。蚊帐已经挂好了。但是床由木板+一层凉席构成,非常硌人。

室友陆陆续续地到了。有来自黑龙江的同学,同样来自湖北的 mywaythere,还有之前见过好多次但是没说上话的 WHY 神犇。QwQ

把网络流的知识梳理了一遍,试图学习听说了好久的“模拟费用流”,未果。hint +1

吃完晚饭去操场上散步。远远地走来一高一矮,一瘦一胖的两个身影,那自然是 Sengxian 和 skipher。事实上并不止两个身影,于是认识了 Qizy。

Day 1

上午是开幕式。这次比赛是旷世科技冠名赞助的。dzd 讲了讲自己对于鲁迅的热爱。绍兴一中校长的发言一如既往地强行温暖+感动。广大选手获得一个新称号 - “CCF NOI 的孩子”……

开幕式结束后在食堂复习了一遍笔试题。

中午在收到问候的同时,得知了一个奇奇怪怪的说法……下午笔试的时候心情有点乱。所幸没出什么岔子。笔试结束后,也渐渐平静了。练习赛的题目表明,今年只有传统题。对我是个好消息。

复习了几个模板,当然,对于后面的考试没什么帮助。如果一个算法/数据结构本身都不能正确而快速地写出,那就别指望在考试中能用出来了……不过找点事干还是好的。

又睡不着觉。但这次并不是像以往那样,因为思绪连篇而睡不着。头还有点疼痛,可能是因为头发是潮湿的,又吹空调。在床上翻来覆去,下来好多次,又不敢弄出声响。最终,在阳台上给妈妈打了电话。妈妈表示:1. 现在这个时候没办法请假带我去医院,2. 这种症状去了医院也算不上急诊,3. 更有可能是心理原因……

室外很温暖。空调的排出的水滴在我的身上。空无一人。旗帜飞扬。天上嵌着两颗星星,想知道它们的名字。听了一支曲子。天上飞过一架飞机。

凌晨三点,星星隐入云层消失无踪,我想我也该睡觉了。调整了一下姿势,渐渐入睡。

Day 2

我的室友居然上了 6:10 的闹钟!勉强又睡了半个小时。发现松爷,吉司机一行人。食堂里没有咖啡。不过,睡意在可控范围内。

先读了一遍题,没有立即产生思路的。决定挨个仔细看。

T1首先联想到,如果只有加法,暴力是均摊 O(1) 的。但是还有减法啊……先考虑一下加减 2^k,丢一棵线段树就好。那么,得到一个 O(30 n lg n) 的算法。看起来分很少的样子 T_T 试图找出复杂度更低的算法,无用功。连 T1 都不会做,有点慌……而且比赛已经开始一个多小时了,一行代码都没写。时间一分一秒地过去。又看了一遍数据范围,发现70+还是有的,便开始码。最终的实现常数巨大,非常丑陋……感觉样例不算太弱,就没做更多测试。

此时,考试时间应该已经过去了一半。感觉很糟糕。

去看 T2。n,m 大的不会处理。但其他一些部分分还是可以拿的。全为 1 且 c=0,k=1 都好处理。k≤7,由于字符集很小,字符串的总数很有限,把它们的哈希值用 bool 数组存储起来;维护看起来是很容易的。先写了 O(nm) 暴力。直接开了 1000 x 1000 的数组。复制来复制去,还要记录每条链的长度,每个点的归属,好麻烦……花了一个多小时才写完+调完。又花了半个小时写全为 1 且 c=0。然后问题来了。开始考虑不周全,直接从 stdin 读取输入,判断数据的特殊性质很不方便……而且一时没想出 k≤7 怎样维护每个点在哪条链里。启发式合并?可还要断开啊,虽然 c 很小……算了,后面有时间再想吧。

此时还有 40 分钟左右留给 T3。先拿了 10 分。然后发现我只会 10 分……

离考试结束还有 20 分钟。冷静了一下,发现 T2 还有 k=1 的 8 分可以拿。直接用 n,m 的范围判了一下数据的类型。

考试结束。感觉拿到的都是全场都有的分……

去医院。领队老师顶着酷暑陪我在校门口,直到妈妈来接我。没检查出物理上的问题。

看到 UOJ 群里,yp 正在和人讨论着 T2 的做法……Orz 等等,有个东西叫链表??!

请你写一个数据结构维护一些链,支持: 1. 给一个链头和一个链尾,把它们接起来,并输出连接处附近的 k 个节点。 2. 给一个非链尾节点,分离它和它后面的节点形成两条链,并输出连接处附近的 k 个节点。

……

用哈希表存字符串的哈希值。空间 1GB 够用了。

有点难过……T_T

最终是 64+40+10=114 分。

T1 优化的核心思想是处理 30 这个常数。没有想到压位,考场上也没想到去推广 32 叉线段树。暴力线段树也本能获得更多的分数,而我的实现中,每个节点对应 2 个int和 1 个bool,前者是完全可以省去的。

T2 的确就是暴力……yp 用unordered_map被卡掉二十多分,好可惜。没做出来似乎是因为忘记了链表这种数据结构……

T3 是个 DP。暴力部分可以枚举每一列的高度,考场上只想到枚举每个格子的状态。

晚上想看电影,在豆瓣上翻了翻,确定了《情人》。但是没有耳机,网络也很差,就改看原著。后来太困了,急于看完而无心品味,最后两节现在完全没有印象。

Day 3

上午去绍兴市科技馆。有一个体验 VR/AR 的展厅。许多亮晶晶的矿石,赏心悦目。看到了最后一只平塔岛龟 - 孤独的乔治的模型;原来象龟的个头这么大。放映了一场给世界末日辟谣的球幕电影。

度过一个平静而愉快的下午。

晚上打了 Edu CF Round 25。巧合的是,两个同学也选择在这个时候 Virtual participate。有一道题需要用 KMP 找循环节。突然想到,明天不会考字符串了。还有什么没考呢?数论,图论,网络流。啊,还有计算几何……hint +1

晚上按正常时间入睡。

Day 4

读了一遍题,T1 像是 2-SAT,T2 像是网络流,T3……计算几何。

T1,每个变量有三个取值诶。真的是这样吗?除了 x 型地图,其他三种地图本身的限制,使取值个数减少到 2。x 型地图很少,不妨暴力枚举一下取值……最大的测试点还是很虚。改枚举 x 型地图禁用 A 还是 B,这样,时间复杂度就是 O(2^d(n+m)) 啦。万事具备,只欠东风。2-SAT 怎么写的来着?回忆了一下(刘汝佳蓝书上的写法)。有一些变量的取值是确定的,会影响这个算法的正确性吗?只记得汝佳老师说,“如果当前考虑的变量不管赋值为真还是假都会引起矛盾,可以证明整个 2-SAT 问题无解(即使调整以前赋值的其他变量也没用)”。不知这个证明的适用范围如何。唉,先写吧……大样例输出 -1。手动构造数据,发现了问题。写了个 spj,大样例输出正确。试着用随机数据测试,但是 m 较大时,输出全是 -1,而我只会检验方案是否合法。不过跑得挺快。只能用小一点的 m 来测试。

T2,没想出怎样建图,一时也没想出如何暴力,就先写了 T3 的 20 分暴力凸包。

回去看 T2。怀疑这不是网络流。又过了好一会儿……

通过阅读样例解释,我终于发现了自己理解错了题意。不是每天剩余的蔬菜烂掉 x 个,而是每个蔬菜有一个不变的保鲜期,所以我们可以先卖快烂掉的……

慌慌张张地想了一下怎么建图,就开始写了。不确定有多少分,但是不写肯定没分……

距离考试结束还有 10 分钟,样例一的第一组输出正确,但第二组输出偏小……

冷静了一下,先检查了一遍其他两题的代码,加上文件输出输出,然后开始静态查错。

还剩 3 分钟的时候,发现打错了一个变量。还剩 2 分钟的时候,样例一终于对了。没再进行其他测试了。

考试结束。T1 算法正确性未卜,T2 就更不用说了。之前在正式比赛中,有两次结束最后 1 分钟还在写代码的经历,都炸了……

出考场碰到 mhb,交流了一下。情况相似,但他 T1 是 3^d 枚举,T2 的暴力费用流比较稳。

如果 T1 满分,T2 暴力不挂,会有 150 分左右。虽然无力改写结局,但是收尾不至于太惨淡。不禁想起 NOIP 2016 Day 2,我还以为自己 AK 了(捂脸),呃,结果……所以还是不要抱太大期望吧。

85+0+20=105 分。有点忧伤,随手点了个“挂起”想走人,站起来又想再调调 T2,但是死机了……

mhb 同学的 3^d 枚举有 90 分……是常数问题吗?

回寝室思考了一会儿人生。然后去听讲题。

蓝书上的 2-SAT 算法是 O(nm) 的……T2,同样是理解错题意,我却只能 GG……T3,那位高一的小妹妹好厉害……Orz

肚子和心里都很疼。回寝室躺了一个小时。晚上把原来 thu 60 分的协议换成了正式的,去掉了“前 100 名一本”这句话。从这个角度来看,这次是失败的。父母劝我再签一下另一所学校的一本线,留个退路。没有这样做。

Day 5

上午的“趣味运动会”改成了“趣味棋类活动”,但是有同学表示他们在寝室进行“趣味电子竞技大赛”。mhb 找我帮 wnx 借女装,但 wnx 表示“不要理那个傻逼”。下了象棋(把 AI 的策略搬到棋盘上),五子棋(棋盘和棋子没有了,于是用象棋,但是棋子和格子太少了……),跳棋(正常地输了一把,神奇地赢了一把)。

下午颁奖。这次不是玻璃牌。王宏问:“你来自哪个学校?”昨日重现。

晚上散伙。2017 年湖北省队解散,享年 3 个月。这段时光是快乐的。即便失败是少不了的。

再见。