NOI2024游记
NOI2024游记
也该写游记了。(本文唯一一个句号)
pre
省选寄了,喜提高贵的大 D
希望有 Ag
Day 0
报道日
中午,午饭后大概一点从代码源赶过来,正式入住
和本校 oier 切蛋糕,进行一个习俗的传承
领取徽章的时候,发现我之前剩余的徽章忘带了,导致徽章数量锐减
不过我之前由于不善社交,从来没有换完过,就这样吧
和 zkx,wyf 分到了一个寝室
在床上躺了一会儿,就和 wyf 打乒乓去了
晚上,尝试随机抽取几名幸运 oier 交换徽章
回来寝室,发现寝室成雀庄了(
由于人员往来,我的徽章很快就换完了
达成成就:Day 0 换完徽章
Day 0.5
开幕式
首先和各种活动一样,各种领导讲话
然后睡了
还是 dzd 讲话有意思
下午是试机和笔试,难得一次性打对了 .bashrc
练习题是 NOIP 2023,先写了 T1,用 selfEval 测试发现抱零
然后发现没写 freopen
改了过后发现 90pts,原来是没特判
成功做到做过的橙题吃两发罚时
然后是笔试
笔试刚刚放开的时候,听到一群人笑,但是我登录的时候发现上不去了
然后通知延迟 15min
之后不算顺利的完成了笔试(结束编号为 $pid 的进程我一开始选的 delete $pid,哄堂大笑了)
查分,没挂,问了一下 SX 没有人挂分
后来知道笔试一开始因为主办方没有 localStorage.clear(); 导致系统默认显示去年同考号的答案
而且题目除了“今年是第几届 NOI”都和去年相同,这道题的正确选项也和去年相同
这下真下发 std 了
回到寝室,别人复习板子,我开摆
Day 1
比赛日
没有晚起,赢
和 WC 一样,有纸质题面,于是没有去看电子版题面
值得一提的是,今年 NOI 是 THUSC 赛制,在 selfEval 里提供了和真实测试数据范围一一对应的 pretest
上来当然是先看 T1
感觉是那种只要会多项式复杂度就会做的题,于是尝试去转化条件
但是 1h 过去了,没有任何进展
1.5h 过去了,还是没有任何进展
这个时候不得不看看暴力了
首先看到了占据半壁江山的
然后继续想正解,突然灵光一现,想到了下面这个做法:
考虑每一个集合
S ,满足\forall i\in S,i\leq m,|S|\leq 3
- 考察下标
i 满足S\subset a_i ,要求\displaystyle |\cup b_i|\geq |S| 如果所有限制都满足,则区间合法
然后写了一个
值得一提的是,大小不超过 3 的集合可以使用 basic_string<int> 维护,好像比自己写类要快
第一次调用函数
std::set_intersection和 第一次在比赛中使用std::back_inserter祭
这样就有 80pts 了
然后想到好像不值得为了 20pts 去写正解,就去看 T2 了
此时已经大概过了 2.5h 了
T2 的 15pts 是简单的,先拿到手
然后尝试去阅读那个分数表,看了半天也没看懂它在说什么
首先写了一个分治算法,好像有 20pts?
发现这样会导致
- 在
n < LIM的时候,把二分改成四分
进行调参,这样就有 42pts 了
接着,把四分改成五分,就有 48pts 了
一共 64pts
然后尝试组合四分和五分,发现没有再高,就去看 T3 了
此时大概还剩 1h 40min
想了一会儿,发现想不到
A 是奇偶染色后分别去计算,B 是 2 sat 或者 bitset 传递闭包后去判断?
突然想起来好像 T1 的正解还没写,于是翻回 T1
发现 T1 答案可以双指针,于是写个双栈模拟队列实现不带删的尺取
写完后发现样例 2 挂了,调了半天
终于在还剩 30min 的时候调了出来:队列重构时入队顺序反了
多次测试,selfEval 上最后一个点最慢的时候跑 0.94s,不知道正式数据能不能过
然后赶紧 rush 了 T3 的 A 性质和
然后发现我 B 性质假了:传递闭包是
此时还剩 10min,写了几行后放弃,觉得不如检查一下之前的代码
然后就盯着三个文件看直到比赛结束
估分:
出来过后我听到的都是上了 200 的
吃完饭和本校讨论,发现成功成为本校垫底选手
T1 只要判断位置的集合“同构”即可,大家好像都是 1h 以内过的
T2 除了我都是 78
这下寄了
下午查分,大家都没挂
随了 24 个人,发现我是 rk17,按照比例来算妥妥的上位铜
此时想银只有靠 Day 2 翻盘的
但是我的 OI 经历中还没有翻盘成功的经历,这次,又能成功吗?
算了算了
反正是 D 类,打成什么样都无所谓
和 wyf 约着去打乒乓球,但是被教练强迫去听讲题
去了发现 T2 只需要一个 dp 求出决策点就可以很轻松的获得 90
交互题 dp 出最优策略这个套路我之前又不是没见过,怎么之前就没想到呢?
说什么都已经晚了,打球
回到寝室,别人复习板子,我开摆
Day 1.5
社会实践日
去了重庆三峡博物馆
很好的一次经历,不懂为什么很多人之前不愿意去
回到寝室,别人复习板子,我开摆
Day 2
比赛日
没有给自己设定什么目标,比如说必须翻盘什么的,因为根据以往的经验这样只会适得其反
打成什么样算什么样吧
先开 T1,什么抽象题目
肯定是找性质
发现定义2和5是没用的,只是为了样例解释
然后写了
然后我尝试把所有完美正分数打表打出来,发现它们是由几条直线形成的
(也就是说,有一些一次函数的 pair
于是,我尝试找出这些 pair
我找啊找啊找
找啊找啊找啊找
找啊找啊找啊找啊找
直到后来发现这个行为与 观察素数螺旋来尝试推导线性筛 一样愚蠢
遂放弃
然后灵光一闪,发现直接 dfs 可以做到
写了,发现有 85pts
然后尝试去写一些类似根号分治的正确性未知的做法,没有多获得一分
此时已经过去 3h,赶紧看 T2
感觉是一个长链剖分+线段树的题,感觉是可以想出正解的
于是想了 1h
发现不仅正解不会,任何一个特殊性质都不会
赶紧写了
首先 A 性质是送,找到缩点以后入度为 0 的点,如果只有一个,那么这个点代表的点是 2,其他是 3
一开始以为 B 性质也是这样,但是没过样例
然后乱写了一个复杂度不低于
只剩 8min 了,赶紧 rush 测试点 1
写完,样例过,selfEval 挂
最后 1min 多,发现二进制枚举的时候 i&(1<<(j-1)) 写成了 i&(1<<j)
改完,把三个题都放上了 selfEval,等到比赛结束后几秒才跑出结果,过了
估分:
比赛出来,听到了讨论声音有比我分数低的,感觉应该是比 Day 1 打的好
下午查分,一分没挂,我校其他人也都是两天一分没挂
加上 Day 2,仍然是 SX 倒 3,我不好说
先是听说银牌线 400~410,然后听说金牌线 540,教练说银牌线 540-100=440
感觉应该是没用银了
没去听讲题,逃去打球
晚上是嘉年华,去嘉年华的路上看到了成绩公示,数了一下我前面有 266 个人(显然有几个误差),按照去年 D 类银以上 55 人来说是没有银了
失望
去嘉年华没带手机
在嘉年华,也不去想之前的事了,只想着玩耍
很难得,体会到了纯粹的欢乐
回到寝室,群里说银线 409
一开始我是存疑的,直到教练给我发了一个 409,我才真正相信
非常高兴,跑到食堂撸串,后又去操场上唱歌(主要是想唱但怕人听到)
今朝有酒今朝醉!
Day 2.5
上午是演讲和节目
值得一提的是,rzh(@rzh123),zjx(@zhjxaoini),wyf(@wYYSZLwSSY)演唱了《夜空中最亮的星》,这是 SX oier 第一次在 NOI 表演节目
银线出了的时候,我本来也是想上台的,但是由于他们排练的时候银线还没出,这个时候再加入显得太“见机行事”了,就没去
下午是闭幕式,D 类非金不予颁奖,只有一张废纸
晚上飞回了 TY
suf
这次 NOI 也算是这个赛季的完美的句号了吧
我这次虽然没有较大的失误,但是水平没有完全发挥出来
至于总结,一句话概括:平常心去考 NOI,在非极端情况下(比如 Day 1 这个我分数指望冲金)不要走极端,不要提前放弃,说不定就有好的结果呢
也是时候道别退役 er 了
我也要 std::this_thread::yield(); 了
Goodby,OI!后会有期!