我今年高一,这是我第一年作为正选参加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。

NOI2020游记的更多相关文章

  1. NOI2021 去不了记

    没错,由于某些 zszz 的原因,我是真的去不了了(指去不了 ZJ) Day -11 ~ -7 - 2021.7.12 - 2021.7.16 令人自闭的 ISIJ 终于结束了----From ycx ...

  2. NOI2020网上同步赛 游记

    Day1 预计得分:\(32pts\)(我裂开了--) T1 美食家 表示考试的时候想到了关于矩阵快速幂的想法,甚至连分段后怎么处理都想好了,但是没有想到拆点,还有不知道怎么处理重边(这个考虑是多余的 ...

  3. 开始是为了结束,结束是新的开始——NOI 2020 游记

    Day 0 报道日 晚上的时候我们的教练给我们做考前动员.给我们讲:NOI的五个小时需要认真的规划,不能被T1打乱节奏.他让我们思考明天的策略,把可能出问题的地方都想清楚. 结果后来,宿管给我测体温, ...

  4. 【20161203-20161208】清华集训2016滚粗记&&酱油记&&游记

    先挖坑(这个blog怎么变成游记专用了--) 已更完 #include <cstdio> using namespace std; int main(){ puts("转载请注明 ...

  5. 【20160722-20160728】NOI2016滚粗记&&酱油记&&游记

    先挖坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.c ...

  6. NOIp2016 游记

    DAY -2 不要问我为什么现在就开了一篇博客. 本来想起个NOIp2016爆零记或者NOIp2016退役记之类的,但是感觉现在不能乱立flag了.所以就叫游记算了. 前几场模拟赛崩了一场又一场,RP ...

  7. NOIP2016游记

    只是游记而已.流水账. Day0:忘了. Day1:看完T1,本以为T2一如既往很简单,结果看了半天完全没有思路.然后看了一眼T3,期望,NOIP什么时候要考期望了,于是接着看T2.一开始我推的限制条 ...

  8. CTSC2016&&APIO2016滚粗记&&酱油记&&游记<del>(持续更新)</del>

    挖一波坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs. ...

  9. 游记——noip2016

    2016.11.18 (day 0) 呆在家. 悠闲地呆在家.. 明后天可能出现的错误: 1)没打freopen.打了ctime: 2)对拍程序忘记怎么写了...忘记随机化种子怎么写了: 3)不知道厕 ...

随机推荐

  1. [转]ubuntu系统重新分区、根目录扩容

    原文地址:https://blog.csdn.net/code_segment/article/details/79237500,转载主要方便随时查阅,如有版权要求,请及时联系. gparted是一款 ...

  2. 03_MySQL重置root密码

    重设root密码

  3. js获取数字数组最大值的几种方式

    原生Math.max方法 Math.max 方法不能接收数组,可以使用ES6的...将数组打散 const arr = [111, 12, 111, 34, 2, 5, 76]; console.lo ...

  4. Spring Security 实战干货:OAuth2登录获取Token的核心逻辑

    1. 前言 在上一篇Spring Security 实战干货:OAuth2授权回调的核心认证流程中,我们讲了当第三方同意授权后会调用redirectUri发送回执给我们的服务器.我们的服务器拿到一个中 ...

  5. 在 c++ 程序中出现CtrIsValidHeapPointer问题

    在c++程序中出现CtrIsValidHeapPointer问题, 我发现的原因是申请了大量动态数组但是并没有把他们初始化 为数组赋初始值便可以很好解决这一问题.

  6. wxWidgets源码分析(9) - wxString

    目录 wxString wxString的中文字符支持 Windows Linux Unicode Linux UTF-8 总结 wxString与通用字符串的转换 wxString对象的创建 将wx ...

  7. 研究了一下 Webpack 打包原理,顺手挣了个 AirPods Pro

    这些年,Webpack 基本成了前端项目打包构建的标配.关于它的原理和用法的文章在网上汗牛充栋,大家或多或少都看过一些.我也一样,大概了解过它的构建过程以及常用 loader 和 plugin 的配置 ...

  8. 清华大学-成绩排序(排序+解决MLE问题)

    成绩排序 成绩排序 这里需要注意的就是超内存的问题. 解决方法就是通过指针的方式,每次动态开n大小的内存,而不是一开始就分配. #include<bits/stdc++.h> using ...

  9. HDOJ-6685(暴力+思维)

    Rikka With Coin HDOJ-6685 主要的思想如下: 首先10元的硬币最多只会用一个,如果用了两个,直接替换成一个10元.一个20元一定不亏. 20元的硬币最多只会用三个,如果用了四个 ...

  10. java 入门环境搭建

    Java帝国的诞生 1972年C诞生 1982年C++诞生 1995年JAVA诞生,为了实现真正的跨平台,在操作系统之上又加了抽象层,叫做JAVA的虚拟机,统称JVM 三高问题: 高可用 高性能 高并 ...