省流:两天 \(100+100+8\),小丑干净了)
怎么我还没有进过省队(
自从 CTS 之后,仿佛是运气用光了,毫无征兆地开始皮肤过敏。中间一度脸上肿得睁不开眼,在常州开的氯雷他定还有强烈的胃痛副作用,真是痛不欲生。去了一趟南京的医院才有所好转,不过后来身上又开始了……简直像是被诅咒了一样。
从小学开始就没有过这样严重的皮肤过敏了,我还是原来的那个我啊!
好不容易在大概省选 2 周前,才有了足够的精神状态开始打模拟赛,总体算是恢复了一些水平。最后两场模拟赛尝试全真模拟!使用学校的电脑,但用到后面已经是编译一个题半分钟,打字都卡的状态,被迫换成自己电脑,并都没写完一些分数。成功在最后两场模拟赛中,打出了最真实的水平。
Day 1
自从皮肤过敏开始,每天都保持着 10:30 睡觉的良好作息,但 Day1 前晚上就始终辗转反侧,难以入眠。好不容易睡着了,还在 3:30 就醒了,此后一直迷迷糊糊、半梦半醒的。
开场先把 3 个题都看了下,发现 T1、T2 应该都挺简单的,T3 应该较为困难。
大概半小时的时候,就把 T1 过了,不过感觉没有什么有价值的暴力,就没对拍。
由于做过 P11369,之后对着 T2 编了个类似的做法,大概是定期重构+分块,复杂度是 \(O(\frac{nm}{w}+n^{\frac{5}{3}})\),感觉很可以过就写了下。写完发现有点慢,仔细卡了卡常。发现手写 bitset 还会慢 eps,这是因为 \(O(\frac{nm}{w})\) 部分跑得相当快,完全不是瓶颈,而 bitset 的查询则在瓶颈上,这部分手写的 bitset 反而略慢一些。而先求出每个点的 deg,接着 vector
resize,再插入,竟然是有用的!有可能是因为这样空间会更小一点,遍历的时候就会更快一点。除此之外,除了调了调块长就没有什么其他的卡常方式了,此时在 nfls 的机子上,最后一个大样例跑 6.8s,而且最后一个大样例的 \(m\) 不是满的,不过测了下发现 \(m\) 对我的影响比较小,先当自己过了,此时大概已经过去了 2.5h。
还剩 2h 做 T3,开始一直在分析,在纸上画了画各种情况,但一直都没有想法,再一次注意到时间的时候竟然已经只剩 1h 了!我赶紧先尝试写了个 \(O(n^2)\) 发现完全不对,然后去做树,发现也假光了,最后一直和指数暴力对拍去修树的情况,但全假光了。
期望得分:\(100+100+8=208\)。
出场 gqh 说他 T3 也是 \(8\) 分,心里好受一点,也许 T3 真是不可做题?
后来 qzx 说他 T3 \(72\) 分,说树是纯送???后来又听说 lyx, tyx, zyf, xjc, lxy, wfh, djx T3 都拿到了很高的分数。
小丑干净了,这下省队都危险了。
不过之后分析了一下,发现比队线还是高了不少的,但是距离 A 队差挺多,qzx, lxy, lyx, xjc 都比我高了不少。
不过凯文说他 100+20+8 是什么锤子???不过凯文说他 100+20+8 是什么锤子???不过凯文说他 100+20+8 是什么锤子???
Day 2
Day1 爆炸了之后,由于 A 队无望,反而 Day2 没那么紧张了。Day2 前挺快就睡着了,早上 5 点半才醒,不过感觉头脑挺清醒。
开场还是先把 3 个题都看了下,发现 T1 应该是简单题,T2 应该是能做出来的题,T3 没什么头绪,大概难以得到很多分数。
T1 按照 \(a_i\) 和 \(b_i\) 大小关系分了下段,然后线段树维护了下 \(a_i-i\),是一个区间覆盖,线段树二分的形式,半个小时的时候通过了。
T2 感觉非常复杂,分析了一下,发现按照边权从小到大加边比较容易维护,而对于一些连通块通过该层的边连到一起,则是一个类似 \(w_i=1\) 的形式。开始我的状态是 \(dp_{S}\) 表示连通块集合为 \(S\) 它们没有入度,且内部强连通的概率,但后来发现由于只考虑入点是合法点的边,所以 \(S\) 集合内连通块的合法点集合是重要的,于是又加了一维变成 \(dp_{S_1,S_2}\),表示连通块集合为 \(S_1\) 它们没有入度,它们的合法点集合为 \(S_2\) 且内部强连通的概率。而 \(S_2\) 是一个大小为 \(S_1\) 连通块大小和的集合。我需要使用 vector 定义状态,不过状态总数分析了一下是对的。而转移则还需要处理 \(S_2\) 的下标偏移,暴力遍历求出还是 \(O(n)\) 的。开始先把暴力遍历的写了出来,写了好久好久,差不多写了 2h 才写出来,中间上了好几次厕所,并且吸取昨天的教训,不停地看时间确保别在梦游。
开始调完一下基本的错误后,去测大样例,发现 C 性质的全过了。然后发现,这两组数组竟然输出结果不一样。
0 1
3 2
1 2 1
2 3 1
0 1
3 2
1 2 1
2 3 2
后来又分析了下,发现对于一般情况,我还漏算了一些系数,仔细修了修就不 WA 了。不过发现满的 C 性质,我代码跑得比较慢,分析了下发现计算 \(S_2\) 的下标偏移是瓶颈,把暴力扫一遍,改成了个很恶心的递推,终于才跑进了时限内。此时还剩下 50 分钟左右。
T3 先把暴搜打了,但此时的精神状态肯定已经难以支持我思考更多的分了,想了一下 \(n\le 18\),也没有什么收获。检查了一下 3 题的代码,发现 T3 的 unordered_set <__int128>
CE了,自定义了个哈希就没问题了。
最后誊抄代码长度时,才发现原来我 T2 总共算上注释写了 13.7kb。
期望得分:\(100+100+8=208\)。
出场之后发现 T2 就只有我和凯文过了???\(208\) 是 JS 标准分了。好像其他人考得比较一般,有可能有 A 了。
Day ?
Day2T2 的代码去掉注释也还有 7.9kb。发现 Day2T2,由于过程中需要有解,所以对于每个连通块,一定有合法点,所以记录 \(S_2\) 就可以确定 \(S_1\) 了!
唐完了,感觉这样可以好些非常多,但这是怎么能想到的?)
Day 6
中午出分了,\(100+100+8+100+100+8=416\)。
qzx 两天反向挂了 \(16+16\) 分,也再次拉高了 Day1 的标准分,变得更加恐怖了。
xzh Day1T2 的 \(\sum n-ans\) 过了 \(88\),甚至开大数组就 \(100\) 分了。但由于 qzx 拉高了 Day1 标准分,所以 djx 翻了 xzh。
下午问到了 irris 的得分,他 Day1T2 如愿以偿地得到了 \(88\) 分,又翻了 djx,成为了 JS 长队。这样 djx 就变成队线外 1 名了,只能期待奇迹了。
zxx, pmd 怎么这么牛啊,继 NOI 之后再次被击败了!真是后生可畏啊!