NOI2020游记

我今年高一,这是我第一年作为正选参加NOI。

去年NOI没写游记,结果前两天想要复盘NOI2019的时候发现只能回想起一些模糊的记忆了。为了防止明年再遇到这种情况(其实我更希望没有明年),就有了这篇游记。

也正是因为这个原因,本文将专注于考试本身,其他事情就不会怎么记录了。至于经历或目睹的其他事情,写出来估计也难有人有共鸣,所以干脆省略吧。

考前的情况

考前几周的模拟赛/其他比赛基本上都以各种原因挂掉了(很惨的那种),大部分时候是因为策略/考场行为上的重大失误,偶尔是因为智障没想出题。

总结了不少考场策略和注意事项,但不知道为啥总能花样翻新地犯错(偶尔也会旧错重犯)。考前两天终于意识到了最重要的问题:考场上不冷静,心理活动太丰富;然后针对这两点提出了一点改进方法。

笔试

考前一天晚上准备了一下,成功AK。

Day1

比赛之前

前一天晚上十一点总算完成了糊墙式的复习,早上爬起来之后又背了个快读板子,默写了一遍注意事项,就出发去考场了。

晚上十一点多一点入睡,早上四点多一点醒(然后就没再睡着)。看起来有点离谱是吧,但对我来说还行了……我反正已经习惯考前睡不着觉了qwq。

比赛过程

00.5h:T1的读题和思考。这段时间有点迷糊,不知道为什么注意力不太集中。过程中一度以为T1并非简单题,在30min终于会做后感觉自己是沙雕。想完之后仔细确认了做法的正确性。

0.5h~1h:T2 T3的读题和初步思考。T2很快想到是长链剖分或者线段树合并,T3想出了三种特殊性质分别的做法(其中性质A想的是难写的分块而不是莫队)。判断难度顺序是A->B->C。

1h~2h-:T1的代码和测试。测试时发现自己忘了判-1。自觉进度有点慢,所以没有对拍。

2h-~4h-:T2的思路细化、代码和简单测试。代码本身似乎并不难写,但写了两个有点隐蔽的bug出来,结果调小样例调了很久。本来预计3h出头时能弄完,结果弄到了接近4h。因为时间紧张,过了大样例之后就没对拍,甚至没顾得上瞅一眼大样例强度。

(考场上我的判断是:区分度主要集中在第三题,所以第三题需要拿到可观的分数才能够到队线。因为如此所以在做前两题时没有花时间去换稳定性。)

4h-~5h:肝T3。尝试了一两个思路后认为正解不可做,然后提出了性质A的莫队+BIT做法,接着发现能用四维莫队+BIT做一般情况。认为四维莫队性价比最高,剩下的时间都在写它。当时的判断是:写出来四维莫队,性质A的分就都有了(因为四维莫队全方面强于二维莫队),无性质的分也能拿不少。最后10min 又Rush了一个性质C,为了复用代码,写的是二维莫队+BIT。12:58终于把tears.cpp放进了提交文件夹里,惊险刺激。

后话

100+100+48=248,前两题顺利AC,T3丢掉了性质C和大部分性质A的分数(A是因为忘记针对二维莫队改块大小,C原因未知),但因为出题人卡不掉结果意外拿到了性质B的分数。

官宣rk50的分数是240,但这50个人中包括IOI2020集训队还有DE类选手。猜测今天实际的队线会在230左右。自己在考场上似乎把队线估高了一点。

感觉今天的考试过程中冒的风险还是太大了。明天需要更谨慎一些。

Day2

比赛之前

考前放弃学习。

这次是十一点不到入睡,三点半醒,然后就没再睡着。意外的是精神反而比昨天好。

比赛过程

0~0.5h+:T1的读题和思考。尝试分析连边的图的性质,但完全没有靠谱的想法,甚至想不到任何一个非平凡的做法。

0.5h+~1.5h-:T2 T3的读题和初步思考。T2看完感觉可能可做,推了一会儿性质就先丢掉了;T3看到弦图很开心(考前刚学过弦图),然而试了试自己了解的弦图性质,发现都不太派得上用场,冷静之后决定放弃。

到这时对难度有初步感觉了,判断是CTS级别的难度,A掉一题估计就稳了,三题部分分也有希望。但目前为止一个靠谱思路都没有,还是有点慌的。

虽然T2看起来更可做,但T1毕竟排在前面,还是相信一下组题人的良心吧。于是准备把剩下的时间大致平均地分给T1和T2。

1.5h-~2h+:这期间继续尝试了一些T1的思路,但都找到了反例。最后无奈决定把已经想出来的三个假做法合并取最优解。三个假做法分别是:

  • 把原材料random_shuffle后从前往后贪心选。卡时重复多次。
  • 钦定连边图(把菜肴看作原材料间的连边)为若干菊花的并,对它决策。(状压DP,\(O(3^n)\)复杂度)
  • 贪心,每次把当前的最小元素(指原材料)和最大元素匹配。

2h+~3h:实现了上述三个假做法,并进行了简单测试。有一点细节且代码比较长,但成功做到了几乎一遍写对。说“几乎”是因为测样例发现输出部分写错了。

此时感觉自己这场已经凉了,但还要挣扎挣扎。

3h~3.5h+:继续思考T2,兼顾部分分和正解。过程中觉得自己会正解了,吸取模拟赛教训仔细检查算法正确性,成功发现自己想题的时候把题意想歪了。不过仔细考虑一下,原来的做法似乎能魔改一下以适用于正确的题面。又花了一些时间继续确认正确性和想清楚细节,直到基本确信自己能把它写对为止。

3.5h+~4.5h:写T2。比较顺利,写完一遍过样例。

4.5h~5h:测了T2的极限数据,然后肉眼检查了一遍T1和T2的代码。保险起见开大了T2 trie树内存池的大小。未发现其他问题。

后话

45+100+0,没有挂分,T1得分超出了我的预期。

三天总分加上A队加分,最终排名似乎是rk26。

posted @ 2020-08-15 20:26  TianyiQ  阅读(1712)  评论(4编辑  收藏  举报