<更新提示>
<正文>
Day0
到杭州的时候是下午,休息了一下就吃完饭了。
晚上的时候闲着没事复习了一下几个不太熟的数论板子,(mathrm{exgcd}),(mathrm{ExCRT}),(mathrm{BSGS}),还有高斯消元,线性基什么的,但愿不考。
感觉有点紧张。
Day1
好早就到文渊中学了,感觉人特别多,进考场前膜拜了一下(mathrm{LHJKY})大佬,还从手机上看了一下(mathrm{windows})系统下的开栈方法,然后就进考场了。
地下室感觉有点闷热,还没有厕所,不得不说,那个移动厕所是真的垃圾。
时间到监考老师就公布了试题的解压密码,(mathrm{Ren2Zhen0Shi1Kao9?}) (???),我竟然还打错了一次。
开始先看题,果然还是有树上问题,而且和去年(mathrm{Day2})一样有两道,第一次似乎没那么送分,还是要找找规律。
先推了第一题,一开始看到对于(95\%)的数据(kleq2^{63}-1),对于(100\%)的数据(kleq2^{64}),一脸蒙蔽,出题人在想peach,感觉没什么区别啊。
然后就开始推了,最后发现可以根据题意递归,先求十进制下的值,然后再转换为二进制,时间复杂度应该是(log^2{k}),好像没什么问题,但似乎有点挫。
保险起见,就和模拟程序对拍了一下,结果发现拍的飞快,这时候差不多(9:10)。(mathrm{10000})组数据很快拍完了就开了(mathrm{100000})组继续拍。
然后开始看第二题,感觉有点复杂,觉得应该要先思考固定括号串的统计方法,推了一下,发现可以分治,但是结合暴力(n^2log n)可能过不了(2000)的点,感觉不太行。
再想一下发现可以直接模拟进出栈然后统计,那样的话(n^2)暴力的分应该是有了。
仔细一想,进出栈统计是一个增量的过程,可以直接把链的数据也过了,感觉还不错。但是放到树上似乎要支持撤销,感觉需要一定的技巧,一下可能写不出来,决定先写第三题的部分分。
这时候发现第一题的对拍怎么越来越慢,(30)分钟(10000)组都没拍完,然后想关闭对拍的时候发现(mathrm{exe})根本关不掉了,有点慌,考前停课的时候似乎有大佬也遇到过类似的情况,也拍了很多组数据了,感觉应该问题不大,就没有和老师说。
然后开始搞第三题的链和菊花,感觉链应该比较简单。一开始先想了一个贪心的做法,结果发现必须删掉所有边,有点难办,花了不少时间,还是在原来那个算法的基础上改进的。
然后我想再试试能不能关掉第一题的(mathrm{exe}),结果发现什么的打不开了,电脑显示内存空间已不足。
赶快叫了老师结果是对拍把电脑内存用完了,最后没办法重启了一下,还好程序都存在(D)盘,没什么问题,就是费了一点时间。
然后就肝第三题的链到最后,调出了一个能过小样例的做法,不知道时间怎么样,也没时间写第二题的正解了。检查文件配置,然后就出考场了。
下午回到宾馆发现似乎第三题确实很难,但是大家都(210),一开始感觉自己也有(200)左右,也还可以。
然后在知乎上看到看到第三题出题人发的题解,直接自闭,链的部分分写的好像是假的。然后又看到第一题要用(mathrm{unsigned}),又丢了(5)分,我在想peach吃。再然后发现第二题可以用主席树撤销,我们竟然没有写。
心态有点不好,满打满算也只有(175)分了,感觉(Day2)翻盘的概率不大了。
Day2
还是一样的流程,很快就开始考试了,解压密码我又输错了一次。
看到题就感觉不太可能是有些人昨天说了(mathrm{Day1Day2})放反之类了,感觉(mathrm{Day2})更有难度了。
第一印象:(T1)神仙计数,(T2) (dp)(+)鬼畜优化(+)高精,(T3) 估计还是计数。
先推了一下(T1),发现怎么(dp)的不太行,可能要直接计数,主要是因为有(a_{i,j})的系数很烦。
然后看了一下(T2,T3),(T2)很快想到了(n^3)的(dp),但是分好像不太够,发现可以直接用二维偏序求最值,但是前缀和值域有点大,可能要用线段树,但是(n^2log n)似乎过不了(5000)的数据,就没有写。
然后看第三题,暴力(+)链有(55)分,还算比较良心,决定先写二三两题暴力。
然后考虑优化第二题的(dp),一开始的想法是决策单调性或者单调队列,结果发现单调性不太有,而且决策集合的左右端点似乎不是单调增减的,也没办法单调队列,然后就放弃了。
这时候感觉第二题的线性做法可能不是(dp),于是决定贪心,尽可能分多的段,然后贪心地调整段边界的数字,结果两个大样例都过不去,于是就决定磕第一题了。
还是在想第一题的(dp)做法,想把方案和系数分开来处理,但是还是不太行,然后想了容斥,补集转换,感觉都不行,最后放弃了,敲了(m^n) (dfs)暴力。
感觉要退役了,竟然只写了三题暴力(...)
下午回学校,听大佬才发现第一题(n=40)的点可以直接(dp),然后我第三题的链又写挂了,没有注意到要(dfs),感觉彻底凉凉了。
最好情况下也就是(mathrm{Day1} 95+70+10=175),(mathrm{Day2} 32+36+40=108),合起来也没有(300),真的凉凉了,感觉不用学了。
赛后感悟
大概看完网上的民间题解之后发现其实问题还是出在(mathrm{Day2}),(mathrm{Day1})反而没什么问题,(175)也就是我能拿的分数了,第二题尝试写了带撤销数组的正解写法,调了很久也没有调出来,也不是考场能写的题,唯一的遗憾就是(T1)少了(5)分。
然后最崩的还是(mathrm{Day2}),第一次想了很久,(dp)早都想出来了,容斥和补集转换都想到过,竟然被自己(pass)掉了因为没注意到不合法方案至多只有一个菜不合法,然后就少了(84)分。再就是第二题没有想到(dp)降维,没有必要记录第二维状态,然后只要大胆猜测决策单调性就可以得到(64-88)不等的高分,这才是失分最多的题。
Day(infty)
老师让我们写之后的安排,感觉已经退役了,哪有什么安排。
一定要好好搞组合计数和计数(dp),(dp)优化,以及(mathrm{ZROI})那种风格的思维题一定要多做,(mathrm{cf})的思维题也应该做做,再就是落实熟练高级数据结构吧。
<后记>