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 耗太久没时间了。

posted @ 2024-05-15 10:52  rlc202204  阅读(209)  评论(0编辑  收藏  举报