NOI2021 游记
希望不是退役之战(((
因为台风的原因,日程表出现了奇妙的变化,所以以 7.23 从广东来到浙江这天作为 Day -1 ,以 7.24 试机赛作为 Day 0 。
Day -1
早上八点坐上了从广东到浙江的高铁。先颓废了一会,然后补昨天的 决策单调性和四边形不等式 。
发现这东西奥妙重重,被打爆了。
期间多次滚去咨询 Itst ,发现自己确实非常 sb 。
下车的时候发生了有趣的事情:收拾东西的动作稍微慢了一点,还没走到门口就已经有四五个人上车了。我有点慌,于是直接把箱子举起来挤了过去,而后面的 ntf 不仅动作更慢还更礼貌,于是被堵在车里,最后关门之后也没有成功出来。
我 在 外 面 , ntf 在 里 面 。
并没有重新开门,于是 ntf 被送去了下一站。
下午和晚上没有太多有趣的事情,就不写了。尝试去 gd 其他宿舍串门,结果发现大部分都不认识,于是自闭。
晚上一不小心搞到大约 12 点才睡觉。发现 dqa 真是规律作息的神仙,早早就睡下了。
Day 0
早上 7 点被起床铃搞醒,很没精神。
做好了躺一天的准备,于是上午尝试用 python 做一下前天的 CF 。
写完 A 之后就自闭了。
多 重 影 分 身
做了道 mld 给的题,并把它推给 zz 搞他心态,似乎成功了。(?)
中午吃饭的时候得知下午考笔试,当场爆炸,滚回宿舍背笔试。
笔试没太多好说的,不过似乎 ntf 又没 ak ?搁这给后两天攒 rp 呢?
明天似乎还是可以躺一天,问题不大。
Day 0.5
NOI2021.rp++;
Day 1
希望不是退役之战(((
一 口 好 奶
很烦,题目也垃圾,我也垃圾。
如果后天能好好打就回来更新,否则就退役算了。
挂分原因:T2 数组开小,并且因为奇奇怪怪的原因,本地造的极限数据也没把它搞 RE 。
update:看起来没有退役,那就回来更新。以下是稍微完整一点的版本。
Day 0.5
不太记得了,大约就是随缘复习&做题。
上午先不知道干了什么,然后想起来还有麦老大丢过来的一道牛客多校的数据结构没做,于是去想。
先迅速想到 \(O(n\log^3 n)\) 的枚举倍数+点分+二维偏序,然后发现这就能过了?大受震撼.jpg
然后冷静了一下发现这个树形结构似乎可以用更优美的方法加以利用,并且 \(\sum (n/i)^{1.5}=O(n^{1.5})\) ,于是决定拿分块乱搞。发现用分块消掉区间的限制之后可以用并查集利用树形结构,于是获得 \(O((n\alpha (n))^{1.5})\) 。
然后 zjr 提醒我完全没有用到分块的啥性质,改成线段树就 \(O(n\log^2 n\alpha (n))\) 了。
然后发现修改和查询不太平均,于是把线段树改成多叉就 \(O({n\log^2 n\alpha(n)\over \log\log n})\) 了。
感觉一个上午过的非常愉快。
下午继续随缘复习&做题,不太记得干了什么。
晚上先看 uoj 群里在讨论拟合 \(xy=n\) ,于是复习了一下 SB 树二分。然后找 cmd&cdw 玩,顺便再做了 uoj 群里的一个字符串。最后又做了 cmd 推的一道构造,感觉心态稳健。
十一点左右睡觉,躺了 0.5h 才睡着,不太舒服。
Day 1
挺紧张的。
因为台风原因,比赛延迟开始,所以 7:45 才出宿舍。
比赛开始,尝试用键盘,发现屏幕怎么都不亮。叫了工作人员发现屏幕没开(
先码板子,然后看 T1 。这个 T1 不是树剖裸题吗,我直接记录重边是重儿子还是轻儿子&%&…&^%…¥…%
直接开冲,然后写完树剖和线段树之后想起来一个点好像可以有两个重儿子……
险些心态爆炸,不过立刻想到了染色做法,改了改就过了。此时大约 1h 。
看 T2 。自闭了一段时间之后观察公式 \(\text{sgn}(P_j-Q_{j})\cdot \text{sgn}(P_{j+1}-Q_{j+1})\) ,突然发现对于 \(j\ne 1,K\) , \(\text{sgn}(P_j-Q_{j})\) 好像总是会贡献两遍,抵消了?
冷静一下发现确实只和起点终点的位置关系有关,那不就是 LGV lemma 裸题吗。写完过大样例大约花了 0.5h 。
发现这个大样例怎么小的离谱。自己造了一个满的数据,发现要跑 4s 。不过把取模优化掉之后就只有 0.4s 了。
(我还是不懂为什么这里没有 RE 。)
上个厕所冷静一下。我还有 3.5h ,一个 T3 你能秒我?
似曾相识的局面并没有出现,迅速发现 T3 缩点之后是一棵树,然后就基本上只剩分类讨论了。
错误地以为只需要判能否到达,于是直接开始码。又是快码完的时候想起来要统计所有能到的点的个数……
冷静一下发现建个虚树就完全不用分类讨论了。写完又是直接过大样例,大约花了 1.5h 。
开始思考能否提前离场
然后大力对拍,三题各拍了 1000 组,其中 T3 拍的甚至是 \(k=10\) 。
非常作死地等到 T3 拍完 1000 组才去测 T1 极限数据,结果发现三棵满二叉树跑出了 1.077s 的好成绩。
还剩 0.5h ,心态炸裂。完全找不到能卡常的点。
最后想起来可以把线段树的传参放外面,改完一测发现 0.985s 。松了一口气,然后发现距离比赛结束还有 30s ???
抉择之后决定稳一手,不改提交文件。然后比赛就结束了。
赛时草稿纸:
出来一问发现人均 ak ,但是 gd 没听到有人能 ak ??gd 弱省实锤了。
下午查分的时候也很紧张,结果还没等打开电脑教练就告诉我只有 285 。当场死亡.jpg
竟然不是 T1 卡常?竟然是 T2 开小数组了?
人傻了,后面心态非常爆炸。
晚上看混双还输了,自闭。
这个 day1 考的什么垃圾(
zjr T1 被卡常,于是 75+75+100=250 ;dqa 本来写了 264 ,结果 T2 高斯消元写挂过了大样例,然后挂了 45 ……
ntf 236,zz 230,cdw 256 ,大概就在队线上下。
Day 1.5
day1 挂分了,于是心情低落。室友考得也不好,宿舍充满了颓废的气氛。
(整个宿舍只有 zjr 打游戏,那么颓废的气氛究竟是哪来的?)
听说 day1 有 30+ 个人 AK ,但是因为某些奇妙的原因我并没有相信(可能是因为旁边的人都考的不怎么样),所以心态还没有太过崩溃。
做了下 Day0.5 的 CF ,做的速度极为缓慢,偏偏还有个 zz 做得飞快,还附带搞心态效果,自闭自闭自闭。
一天不知道干了啥就过去了,啥也没复习。
晚上还是去找 cmd 玩耍,喷了喷 day1 出题人,再做了 cmd 一道诈骗题,勉强回复了点信心。
Day 2
还是很紧张。day1 考了和没考一样,但是状态已经掉完了。
开 T1 ,发现这个题看着就很原。想了几种分段的方式,发现分 16 段非常合理,然后直接开冲。
写完发现又没有极限数据,造完一测发现 2.2s 。又裂开了。
丢到后面再去卡,先不管它。此时大概过了 1h 。
然后开 T2 。wdnmd 怎么还有数据结构?
自闭 30min 之后发现就是直接维护连续段,然后发现维护连续段巨大恶心。
先写了一个 struct ,然后拼在暴力上过了样例。然后写 fhq treap 。
写完大约过了 2.5h ,还是一遍过大样例。然后感觉不太稳,把暴力改成模拟,再写了个对拍,然后就 3h 了。
还剩 2h 搞 T3 ,有点慌。并且码完 T2 的 200 行也挺累的。
然后就自闭了。满脑子 fmt 就是想不到从左往右 dp ,我大概是个 sb 。
最后 1h 决定写暴力。先看了下 T1 ,感觉没法卡常。然后就码 T3 \(n\le 16\) 的暴力。
差不多压线写完了。还有不存在 R
的点没时间写了。
赛时草稿纸:
出来发现并没有人均 ak ,但是群里都在说 T3 是 sb 题,于是开始慌张。
学弟打得都不怎样。zjr, dqa 也一般。
没啥心情吃饭,回宿舍自闭。和麦老大交流了一下得知自己是个 sb 。
这届 NOI 往前五年以内最烂稳了,往后不知道有没有更烂的。
T1 被卡掉 4 分,没有挂别的。希望 cdw,zjr 也能平安进队吧。
update:cdw,zjr 都进队了,zz,ntf day2 过于白给只能打银。dqa 太惨了啊……
下午五点多出榜了,发现自己竟然还能有 rk7 ??
zjk hehezhou 太强啦,完全打不过。
吃完饭到处乱逛。
Day 3
颁奖典礼。
已经是高二退役选手了,明年的华师大二附中看不到了……
如果 day1 没有挂分,并且 d2t3 暴力再打满一点,大概就能苟进前三了,有点遗憾。
祝 cdw,zjr 在集训队训练中继续爆锤我;祝 dqa 高三一切顺利,早日会师北京。
晚上的飞机从六点半晚点到十二点,裂开了。
Day 4
把 D2T3 过了。
感觉不太会做这种题……一是场上降智,没想到 R
较少的时候可以直接从右往左 DP ;二是因为 \(O(\text{poly}(n,m)2^{n/2})\) 的做法到处飞,但是要能做到 \(O(m2^{n/2})\) 就没那么简单,导致换了几种做法才找到一个能用的。
说下我的做法吧:
枚举最左边的 p 是 pos 。那么所有 <=pos 的 p 都必然不会爆掉,而 >pos 的 p 不关心。
1. pos<N
只关心 [0,N) 的 p 的合法性。
直接枚举合法 p 集合,求出方案数,然后再套个容斥。
方案数怎么求?枚举 1<=i<=m ,看这一堆 p 限制了 “对应位置相同/相反”、“对应位置 Y_i=0/1” ,然后算方案数。
(注意,如果当前集合的最大的那个 p 会爆掉,那么这个 i 无用。)
具体地:如果有相反的限制,那么贡献为 1 ;否则如果各有一个限制则贡献为 2 ;否则必定有一个限制,贡献为 3 。
2. pos>=N
枚举 pos ,把会爆掉的行删掉。
一个位置的限制只会影响 n-pos 个 p (除非这里 X_i!=Y_i ,则会把前面很多都限制掉)。
从后往前 DP ,设 dp_{i,s} 表示确定了 [i,n) 的 X,Y ,[i-(n-pos),i] 的合法性是 s ,的方案数。
i-(n-pos) 也代表了所有 <i-(n-pos) 的位置的合法性,因为它们只关心后面 X!=Y 的位置。
i=pos 的时候强制这个位置合法;i<pos 的时候强制这个位置不合法。
转移直接无脑 FMT 。
最后喜提 LOJ 目前最劣解(各种意义上):https://loj.ac/s/1205081 。