NOI2020 游记
我是 BJ D 类,没实力的氪金选手。
Day -2
APIO 炸沉,此处略去不计。
下午 Mr_Wu 讲二分图讲得天花乱坠,体验极其欠佳,但是仍然学到很多。
Day -1
报道日。
一大早起来等火车,EI,xtq 等人陆续到来,压力爆满。
候车室分成北大附,人大附和十一的《三国》。八十中虽然只有两人,但拥有 cy 坐镇。
家长撮合了一波面基,但最终弱国无外交(
座位与其他学校隔得有点远,火车上也失去了外交机会。
捣鼓了一大通总算到了学校,期间还有其他选手上同一辆车坐我旁边然后把我认错了。。。
长沙热死了。不过天气总是很好。
学校大小一般般,风景不错,寝室环境卫生很好,楼下还有小卖部,就是没有信号,空调也老坏。
这可能是我人生中唯一一次住女生宿舍。
鬼使神差的一波分屋。我和 cy(BJ rk2)分到了一屋,其他三人另外一屋。(提一嘴:为什么那个屋的信号和空调都那么优秀啊。。。)
下午 cy 一直在电竞,我也一直在电竞 /kk
晚上的伙食很好。自习室环境优美,一堆大佬压得人喘不过气来。
skicean 连续约了三个大佬去面基,人缘广泛,而我一个都约不到 /kk
码了一个线段树优化建图,挂了;又码了一个 LCT 维护奇环判二分图,又挂了。
回到宿舍,我调题,cy 电了一会也开始码。
最终卡死于 30,完全调不出来,枯了。请教 cy,cy 也没能看透我的那坨屎山。就这么睡了。
Day 0
开幕日+笔试日+试机日。
早上起来,看见 cy 一起床就开始学 whk。震撼我一整年。(第一次见到白天 dj 早晚 whk+OI 的巨佬)
吃完早饭在校园内随机游走。环境是真的很不错。
总而言之开幕式很好看,没有崩。dzd 一句“剩饭罚 1 分”震撼 OIer 一整年,大概能计入 CCF 史册。
AOE:活动网络(x)Annual Olympic of Eating(√)
吃完饭回来看到 cy 又在 dj。淦。昨天在玩单机,今天改王者了。
另:宿舍网的问题解决了。阳台上能收到满格信号。所以就把手机架在窗上开热点。如果想 dj 就到阳台上电。
于是:我和 cy 在阳台上面对面,每人拿着一个手机 dj。我到底来 NOI 干嘛的?
复习了一会笔试后开了上午的比赛。T1 T2 都是裸,可是树剖没一遍写对,考完又调了很久,感觉是个不利的征兆。
吃完饭回来 cy 教了我 APIO 的 T3。学到许多。
下午的笔试正常地 AK 了。
试机是去年的 D1T2,D1T3 和 D2T3。有交互,NOI2020 出交互没跑了(
另:开 -std=c++11 了。爷青结(?
晚上自习,瞎颓,看了看历届 NOI 题,写了会游记。
回来看到 cy 双在 dj。他还告诉我最近 PVZ 很流行,他在自习室打了好久才回来。
是的,PVZ 确实很流行。昨天 xtq 等人在自习室公然 PVZ,还被老师抓包了(
不过我到底是来 NOI 干嘛的???
不管了,明天 Day1,RP++ 吧。
Day 1
这回 cy 没学 whk 了。
早上起来发现手机放一晚上放没电了,一查用电记录,全是 qq,啧啧
四个人在赛场门口回忆 OI 生涯。
突然在 7:50 的时候发现忘带身份证了,跑回去取,,,幸亏来得及
比其他人稍微晚了一点进考场。到位子上发现一份最后一页朝上的纸质版题面。于是在开始前先研究了下 T3 的数据范围。朴实而毒瘤。
开题顺序 132。感言:美食家由于悲惨的命运成为了时代的眼泪。
y1s1,上来就用命运和时代的眼泪这种题目名真的很搞人心态(
T1 美食家 delicacy:
给定一个 n n n 个点 m m m 条边的有向图,有边权。现在你要从 1 1 1 出发走一条路径满足路径边权总和为 T T T 且恰好回到 1 1 1,并获得等同于经过的点权和的价值(多次经过记多次价值)。有 k k k 条性质,每条性质为当已经经过的边权总和为 t t t 时恰好达到某定点 x x x 则获得 y y y 的额外价值。选择一条路径,最大化价值。
n ≤ 50 n \leq 50 n≤50, m ≤ 500 m \leq 500 m≤500,边权 v ≤ 5 v \leq 5 v≤5, k ≤ 200 k \leq 200 k≤200, t ≤ T ≤ 1 0 9 t \leq T \leq 10^9 t≤T≤109。
T2 命运 destiny:
给定一棵 n n n 个点的树和 m m m 条深度严格递增的路径。你可以给每条边赋 0/1 的边权。问有多少种赋权方法使得每条给定路径上都至少有一条权值为 1 的边。 答案对 998244353 取模。
n , m ≤ 5 × 1 0 5 n,m \leq 5 \times 10^5 n,m≤5×105。
T3 时代的眼泪 tears:
给定一个 1 1 1~ n n n 的排列, q q q 次询问,每次给定区间与上下界,问在区间中值在上下界内的正序对个数。
n ≤ 1 0 5 n \leq 10^5 n≤105, q ≤ 2 × 1 0 5 q \leq 2\times 10^5 q≤2×105。
先看 T1,看到边权很小,路径长度 = T =T =T,就想到不久前讲的矩阵乘法。转移是取 max,所以又想到动态 DP 那块的 (max,+) 定义的矩乘。边权最裸的想到了把边拆点做。一看满数据点 m ≤ 500 m \leq 500 m≤500,觉得肯定有基于点数的做法。于是想想发现可以直接维护五个大小为 n n n 的数组拼一起,把性质当断点,然后就 O ( k n 3 log n ) O(kn^3\log n) O(kn3logn) 了,有不错的分数。但是想到是签到题一定要切,我就又想了会,然后就发现可以用乘向量的经典技巧优化掉一个 n n n。NOI OL 就在这挂的,这回我肯定不能再挂了。于是就切了。
然后 T2 太长不想看,开了 T3。发现除了暴力还有上下界为 n n n 和 1 1 1 的部分分,想了想莫队可做,就写了。40 滚蛋了。
此时距离考试结束还有一半时间,我开了 T2。
通览一遍部分分发现都不太可做,然后就关注那些 m 特别小的点。发现可以枚举哪些路径不满足条件来容斥,这样只需要维护路径并的边数。一开始脑抽认为可以像 [ZJOI2019]语言 那样,把端点按 dfs 序排序后两两求距离加起来。于是写了会。
还没写完,机子直接坏了。
举手求助,最后重启了。花了点时间。T1 T3 还在,T2 没了。
然后重写,写完测样例 1,一遍过。然后测样例 2,挂成了负数。
一顿乱调,发现我的代码没有错。然后自己造小样例测,发现自己性质记错了,这个性质仅限于路径有交集且是一个连通块。
崩了,去了趟洗手间,回来重构。
打算想另一个方法解决这个问题,想起了虚树。然后我居然鬼使神差般的只想到了建 2 m 2^m 2m 次虚树。殊不知可以建一遍然后用差分覆盖。这个错误直接导致我复杂度从 O ( m 2 m ) O(m2^m) O(m2m) 变成了 O ( m 2 m log m ) O(m2^m \log m) O(m2mlogm)。
打了一遍虚树,生疏了,忘掉了好多细节,一个一个调。终于,在结束前十分钟过去了第二和第三个样例。自己造 m = 22 m=22 m=22 的大数据跑,要 3s,直接炸到天上去了。看样子只有 32 分了。
还有十分钟没啥可拍的,就检查了一下文件走人了。
出考场交流,果然 T1 是签到题。T2 Mr_Wu 写了个树剖, log 2 \log^2 log2,效率玄学。T3 steven 没能 rush 出来没有上下界的部分分,却做出了只有 50 个逆序对的部分分。总之还是太菜了 /kk
吃完饭等出分。cy 说他不会 T1 但是切了 T3,还说自己写了不到两百分,我一算他应该至少 210,果然在 fAKe。
出分,T1 无解判错了,挂掉了 5 分,其他一切正常。167 滚蛋了。
Mr_Wu O ( m 2 m log 2 n ) O(m2^m\log^2n) O(m2mlog2n) 把 m = 22 m=22 m=22 给干过去了,180 orzorzorz
下午电竞,打了一会皇室和一把 LOL,肝了会游记。
晚上讲题。
T1 是道不错的签到题,(max,+) 矩阵乘套一个预处理倍增矩阵,全场有百来个人切了,没有太大的波澜。
T2 是树形 dp 加数据结构维护。数十个人过了,而我边都没蹭到,zbl。
有人暴力 dp 直接瞎过,上来吊打出题人,赢得全场掌声。
T3 是 lxl 出的大毒瘤,莫队二次离线只能打部分分,正解是分治套分块。
回来 cy 告诉我他 T3 拿了 84。不愧是队爷。
看来 Cu,Ag 甚至是 Au 都是有指望的,努力拼一拼吧。
顺便 srO Mr_Wu。
Day 2
感受到了地狱般的恐怖。
这回是正常进的考场。上来看到题直接懵了。
开题顺序 123。感言:感nm,这场是 CTS 和 NOI 最难的题混一块了?
T1 制作菜品 dish:
给定 n n n 个正整数,保证其和为 m × k m\times k m×k。你可以取任意两个数的一部分(也可以只取一个数),使得其和为 k k k,将这两部分(一部分)消去。问是否存在一种方法使得能消完,给出构造或判定无解。
T ≤ 10 T \leq 10 T≤10, n ≤ 500 n \leq 500 n≤500, m , k ≤ 5000 m,k \leq 5000 m,k≤5000。 m ≥ n − 2 m \geq n-2 m≥n−2。
T2 超现实树 surreal:
在此题中,定义树为无标号有根区分左右儿子的二叉树。给定 n n n 棵树,一棵树的单步生长指通过把一个叶子换为任意一棵树来获得一棵新树。一棵树的生长集指原树进行任意次单步生长得到的树集。问是否只有有限棵树不在这 n n n 棵树的生长集的并集中。
n ≤ 2 × 1 0 6 n \leq 2 \times 10^6 n≤2×106。点数和 ≤ 2 × 1 0 6 \leq 2 \times 10^6 ≤2×106。
T3 翻修道路 road:
给定一个 n n n 个点, m m m 条边的无向弦图,有边权。求 s s s 到 t t t 的一条最短路径使得该路径不包含一个割集。
n ≤ 5 × 1 0 5 n \leq 5 \times 10^5 n≤5×105, m ≤ 1 0 6 m \leq 10^6 m≤106。
完全没思路,一道一道看下去甚至没有部分分。
于是死磕 T1。想了各种贪心发现不对,又想网络流建模。还是没法。最后终于胡出来一个贪心过掉了第二个样例 10 个点中的 9 个。这时我看到 m = n − 1 m=n-1 m=n−1 和 m ≥ n − 1 m \geq n-1 m≥n−1 的部分分,直接就心生疑惑。但是思考了一会还是没有想到。直接把贪心放那了。毕竟前 15 分 n ≤ 4 n \leq 4 n≤4,我想大概怎么贪都能乱过吧。从 T1 出来的时候已经过了三个小时。
然后开 T2。原题讲了一个故事,我认真读完以后表示觉得不可做。然后我居然去尝试推这题的性质。。。耗费 1h,最后推了个稀巴烂,根据瞎写的做法(还调了好久)一测,大概只能过 d e p t h ≤ 2 depth \leq 2 depth≤2 的 12 分和树全是链的 4 分。时间不够了。
T3 根本就是一眼不可做,爬了。爬出了考场。
信心直接全没,和同学交流了一下,发现得分普遍不高,但都比我高。
放弃,直接去电竞了。午饭没去食堂,随便吃了点。
下午的复评咕咕咕到了快 4 点才开门。进去一看,芜湖!5+8+0=13。
steven 拿到了足足 71 的分数,用一套贪心过掉了 T1 m = n − 1 m=n-1 m=n−1,T3 也混到了 20 分。
wyy T2 的性质起作用了,过掉了 T2 链接尾分叉的点,在 T2 取得 32 分,总得分 47。
旁边的 skicean 得分也比我高。
赶紧看看哪挂了,发现 T2 我的做法纯属脑抽被随便叉了,本来特判一手就有 16 分的活生生被我玩成了这样。
T1 甚至拿出的两个部分来自同一个数,忘记判重了,直接炸翻了。
血淋淋的教训摆在眼前。不要太高看自己,有些时候果断打暴力才是最优的选择。
晚上讲题。
T1 是一个构造类型的题,首先要想到 m = n − 1 m=n-1 m=n−1 是必定能构造出来的。可以归纳法:首先 m = 1 m=1 m=1, n = 2 n=2 n=2 必然可以。然后,取最小值整体和最大值的一部分就可以变成 m m m 与 n n n 都减少 1 的子问题。其次要想到 m ≥ n m \geq n m≥n 的时候一定有一个数 ≥ k \geq k ≥k,就可以减去 k k k 变成 m m m 减少 1( n n n 可能减少 1)的子问题。最后只需要解决 m = n − 2 m=n-2 m=n−2。可以证明原问题若有解则可以分割为两个 m = n − 1 m=n-1 m=n−1 的子问题,所以只需要找一个子集令其和 = ( s i z − 1 ) × k = (siz-1) \times k =(siz−1)×k 即可。这是个背包,复杂度 O ( n 3 k ) O(n^3k) O(n3k)。然后同时把所有数减去 k k k 就变成凑 − k -k −k,复杂度 O ( n 2 k ) O(n^2k) O(n2k)。最后用 bitset 优化一下,复杂度 O ( n 2 k ω ) O(\frac{n^2k}{\omega}) O(ωn2k)。
T2 是一个找性质的题,题解有点长这里就不记了。
T3 也是一个推性质的题,利用了弦图上割集的很多性质。听到一半掉线了,感觉代码也挺难写的,估计是防 AK 题。
看来一到真正动脑子的时候,就容易把我区分掉。
回来发现出榜了(仅限正式选手)。 cy 心态大崩,rk54。前 50 刨去 3 个退了的,总共 rk53 可以进集训队,也就是说他 Ag rk1 了。。。这也太戏剧了。默哀
晚上彻底陷入了电竞的深渊。在 steven 屋狂电到 10 点,还陪无所事事的 Mr_Wu 看魔法少女小圆。机房的希望终于也堕入了看番的深渊。 然后回到房间和 cy 一起狂电,cy 开始打 PVZ,我打开 LOL 连打了不知道多少把。11 点 18 熄灯了,还在打,从 10 点一直打到了 12 点。在我结束了最后一把后已经快 12 点半了。cy 拉我下棋,于是打开象棋与 cy 厮杀。看来俩人都是臭棋篓子,最终以一个平局结束了战斗,此时已经 1 点 24 了。于是睡觉。
明天颁奖。