THUSC&PKUSC2024游记
Day -inf
CSP-S 200, NOIP 289。
Day -inf
过了 PKUWC,100+11+10+100+28+18 = 267,低于大众分,喜提二等。
Day -inf
竟然过了 THUSC 和 PKUSC,神奇。
lhr 也过了,可惜 zyj 没过QwQ。
Day -1
zby 玩我的魔方被收了,难蚌。
Day 0
五点半起床,坐动车,做到晚上五点才到余姚,好累啊。
和 lhr 去吃饭,然后上课迟到了。
没打啥板子,毕竟我要是连板子都不会打的肯定也做不出来。
Day 1
有衣服,一个转盘和一个袋子,不错。
竟然不是在余姚考,要去什么社区学院。
然后就坐摆渡车去了。
试机,结果我的电脑上 codeblocks 弹不出运行窗口,自己搞了一个小时还是不行,于是问监考老师,然后监考老师很热心地帮我调终端,结果过来一个巡考老师说这是系统问题,系统问题他们不负责。
……
只好现学 VScode 和终端编译,不过感觉也还行。
lhr 告诉我有一个阿拉丁神灯很好用,不过还是用的 VScode。
中午盒饭四只大虾,可我不吃海鲜,于是 lhr 吃了八只。
回酒店睡觉,下午考试。
13:30 开始。
先看第一题,好诡异,应该是数数题。第二题是个字符串,再看第三题。
这不是金老师高阶 5 Assign 那题原题吗????????
只不过带了个权,不过问题不大。
然而我已经快忘了那题这么做了,似曾相识的场景:PKUWC2024D2T3,和 P7560 一样的套路,然而当时只看了题面就没管了,最后只会最低档暴力。
于是先开 T1,不会,只会 5pts 连续自然数求和。开 T2,不会,先打了个 7pts 暴力。
于是决定还是开 T3 吧。
想了一会儿,发现大概使二分,然后维护两个 \(dp\) 值,然后给没定向的定一下向。大概会了?
开写,结果写假了,但是过了所有大样例,无语。
发现哪里假了,决定改成一个玄学的增量法:每轮定一些边,什么时候定不了了就停止。
最坏可能是 \(O(n^2)\) 的,不过应该有 76pts, 先写上,写完,交一发试试。
结果过了。
虽然只是 pretest,但是感觉跑得飞快,而且即使挂了也有 76pts,所以就没管了。
再看 T2,想了一下子序列问题的经典套路就想到了等价条件:每次调 \(nxt\) 中最大的,能跳 \(k\) 次就可行。
根绝这个结论很容易推出构造:先把最后补全,再填 \(a \sim z\)。
开写,一发过掉。
已经 200pts 了,赢。
回头看 T1,写了 \(l = 0\) 的 20pts,但是 \(\prod n \le 10^9\) 的暴力没跑过去,这个数据范围真的很无语。
已经 225pts 了,T1 感觉是个数位 \(dp\),但是我数位 dp 没做过几道题,应该写不出来,所以开 T4。
这个提交答案题很好玩,发现前四个都是快速幂,后面的看不懂。
于是用而二进制构造,结果只有可怜的 4+3+2+0=9pts,不会了。
压根没发现第四个样例我的答案比原程序时间还多。
然后比赛就结束了。
lhr 没想出 T2,可惜了,然而他 T1 的暴力过了,也是 dfs,看来我的 dfs 写得太烂了。
和父母去吃饭,结果遇到一位很开朗的高中学长,一起吃了一顿。
听学长说完 T1 后发现 T1 好像确实不难,只能说我不会数位 dp 吧。
感觉这个分还可以,准备迎接第二天工程题。
Day 2
八点半开考。
一看题面是 Wordle,看过 3b1b 的视频,赢。
结果发现学习材料和 3b1b 讲的完全一样,看没看过都一样。
开题,发现 T1,T2 只是简单的模拟,开写。
结果这个读入很阴间,还写错一个小地方,一直调不出来。
T2 肯定是在 T1 基础上改,于是看一下 T3。
发现 T3 好像很简单,拿个链表维护一下即可,于是写 T3,然后以一发过了。
回头看 T1,发现哪里错了,改完就过了。
T2 也很快过了。
然而已经两个半小时了。
开 T4,直接 T3 改一改。
结果还是写错好多地方,过的时候已经三个半小时了。
T5 是一个求解器,只剩半个小时了,感觉写不完。
用 T4 的代码改,改完后交发现错了,一看是数组没清零。
结果考试时间结束了,喜提 400 整。
lhr 说 T3 改一改 T5 就可以 64 了,那我 T4 改一改岂不是直接 80+!!!
还是码力不足啊。
中午没在学校吃,去旁边餐厅吃,这里的红烧肉真的好好吃啊。
lhr 把餐卷送给一位雅礼老哥,结果发现那是个已经拿了银牌的大佬,膜拜%%%
下午讲座加讲题,听讲座是一直在玩 wordle,真的很好玩。
讲题,发现 T1 真的是签到,就是一个状压配合数位 dp,超过 1/3 的人过掉,还有各种到大佬吊打 std,直接将从 \(O(2^d)\) 扩展到 \(O(d)\),神了。
不过 T2 更签到。
T3 和正解差不多,看出题人的思路应该没有想到我的乱搞,估计不会卡。
T4 逆天题,前三个点暴搜出最优状态,第四个点由于 \(998244353 + 75497471 = 2^{30}\),直接累加三十次即可。五六七原来是区间求和,各种数据结构乱搞即可。
8,9 是什么莫比乌斯变换和子集变换,这么神奇。
最后一个点纯随机,忘了怎么做了。
最后发奖状,还是拿了一等,挺好。
然后就和 lhr 一起去杭州了。
Day 3
学军中学校园真的好好看啊!
先去签到,然后去听讲座,但是一直在和学长和 lhr 玩 wordle。
和 PKUWC 大同小异,但是学军的校长上台致辞,说:“今天天气很好,看来 pku 的气场很大,昨天还在下雨呢”。
难蚌,昨天余姚确实在下雨。
去试机,感觉上次经验,决定打板子。花一个小时打了一个多项式全家桶,不过感觉用不上。
我的 NTT 不知道为啥错了,后来发现是没有乘 \(\omega\)。
中午盒饭很好吃。
然后回礼堂休息,和 lhr 疯狂复习板子。
下午一点就开始考试了,原来上厕所不用举手啊。
根据 PKUWC 的经验,争取每天一道题加暴力打满。
掀开 T1,串串题,T2 神马计算几何???????????T3 数数题。
由于最近做了好多数数题,所以初步思路:切 T1,T2 打最低档暴力,尝试 T3 多拿点分。
T1 大概五分钟后就会了,枚举回文中心,然后套两个二分配合字符串哈希就可以了。
代码写了 50min,13:55 过掉。
然后看 T2,先把长方形的写了,后面就不会了。
开 T3,先写了个 \(O(m^n)\) 的暴力,然后想怎么 dp。
想了一会儿想到了,直接 dp 套 dp,维护选不选的 \(dp\) 值作为状态即可,复杂度 \(O(n^3m^2)\),当然转移应该更高,过掉了第二个 sub,总共拿了 35pts。
后面就感觉不太会了,于是只好回去看 T2。
不太会三角形,感觉很难,决定从 sub3 开。
发现必须要判断每个点在不在凸包内,可是我连高中的向量都没学过。
玩了一会儿发现一个点在凸包内等价于将凸包的边看成向量,这个点在每条向量的同一方向。
转化成判断两个向量的夹角的正负,不会叉积,但是会行列式,看过 3b1b 的视频,所以知道行列式是算面积的,面积有正负,直接看面积的正负即可。
然后一个 \(O(V^4)\) 的枚举过掉第三个 sub。
尝试优化,想了很久后发先可以剪掉一些无用的,又滑了一下过掉了 \(n \le 300\)。
但是进一步就不会了。
最终 100+45+35=180pts 离场。不过比去年还是进步了很多的。
和 lhr 去吃饭,红烧肉太好吃了。
晚上去骑车,共享单车有点难找,但还是找到了,杭州甚至有专门的自行车道,骑着非常舒服。
还去大莲花里转了一会儿,在篮球成没有篮球,于是和 lhr 扔瓶子,然后还踢瓶子。
玩的很开心。
Day 4
听说今天数学考试,赢!
上午讲座本来打算睡觉,结果主讲人出场那一刻一看 ppt:
吉如一!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
见到本人了,激动。
自我介绍时说到某百科上描述他为 “毒瘤出题人”,这次不会他出题吧,和 lhr 赶紧开始复习吉司机线段树。
讲的很有趣,自动 AC 机,速通函数式编程,还有什么列表同态,酸雨定理等。
中午的饭依然很好吃。
下午最后一场考试了。
先看了一遍题,T1 很经典但是没思路,T2 大 DS,T3 乱搞题?
T1 很快想到了等价条件:每个点都经过偶数次。
然后推出每个点给两个儿子各一半,所以将最开始的点设为 1,每次将一般给儿子,最后看需要乘上几才能使得所有都是偶数。
这不是 NOIP2020 排水系统吗?
然后就发现 \(n \le 50000\) 和题面的提示,需要高精度。
无语,先打了不用高精度的,发现做法没问题。
然后开始写高精度。
发现每个分数分母都是 \(2\) 的若干次幂,所以写了个 bitset 维护分子的大小,这样可以通分时快速平移。
但是加法不好实现,写了个递归的 \(a+b=(a\oplus b)+2(a\&b)\),以为很快。
结果最后只有 75pts,过不去最后两个 sub。
以为是最后算 2 的幂慢了,把试机打的 NTT 复制过来,但是提速效果不明显。
先不管了,去看 T2,T3。打了最低档的暴力,结果 spfa 跑不过 T3 第二个 sub。
耗了一个小时也没啥进展,只能继续调 T1。
突然发现这个加法的实现是 \(O(\frac{n^2}{w})\),小丑了。
于是改成直接手动模拟加法,再记录一个最高非零位,然后过了最后两个大的,没过暴力。
那就直接两份代码拼一起交了,然后过了。
还剩一个半小时,决定冲 T2 部分分。
感觉 \(R_i = n\) 很难做,先做 \(r_i = n\),发现就是一个离线加上线段树和树状数组即可。
写完后又去做 \(l_i=0\),也是类似的。
但是写假了,对拍了发现需要线段树上二分,然后就过了。
没有时间了,最后 100+40+5=145pts 离场。
然后就赶飞机回深圳了。
Day inf
PKUSCD2T2 正解就是一个离线加线段树二分,可惜 T1 耗太久没时间了。