HEOI2023 联合省选 游记

发布时间 2023-04-04 16:45:27作者: APJifengc

决定还是在博客园再发一遍。

省流:考试策略全部爆炸,时间分配全部爆炸,分数全部爆炸。

Day 0

去秦皇岛。路上一直在颓废。

车上打了会奥日,画风超美。

然后到宾馆之后接着打奥日,感觉还是这个比较适合我,太菜了打空洞打不明白

晚上去领胸牌和巧克力,回宿舍颓一会睡觉。

躺下之后脑子里还挺乱的,睡得不是很晚但不是很早。

Day 1

早上起来感觉状态一般,没有很好也没有很差,然后就去吃饭了。随便吃了点然后就上车了。

到考场看座位号,1-01?什么鬼?

到考场 Delov 跟我说一考场电脑屏幕很小还是 win7,二考场屏幕很大而且 win10。我才发现这件事情,上次春季赛的时候没有注意。春季赛的时候我也在一考场,这次还是在一考场,应该问题不会很大吧。

考前先上了个厕所!然后就进考场了。又一次被监考认出来。1-01 离教师机很近,可以同时听见监考老师的声音和大喇叭里发出来的声音,挺神奇的。而且挨着窗户,没拉窗帘,太阳好像正好照着我这。

进去之后开始趴着。不知道是不是昨天颓废太多了,脑子里一直循环昨天听的歌。算了先不乱想了,这样不紧张应该也好。

开考,又是压缩包和 pdf 两个密码,果然这个 day1 文件夹是给省选用的。

照例先开虚拟机,等虚拟机开的时候看题面。T1 不是大模拟,感觉还好,T2 不知道是什么东西,图论一类的,T3 是个树上的东西,没仔细看。

然后去虚拟机了。发现这个电脑配置真的不行,虚拟机点东西卡的一批,虚拟机里开编辑器打字有极其明显的卡顿感。但是我记得上次春季赛在一考场的时候没有这么明显的卡顿吧?不太懂,反正配置完了之后就继续看题了。大概是 8:45 了?

T1 看了看好像挺送分的,感觉拿个并查集随便连连就好了。然后大致 9:10 的时候写完了。怕有细节没考虑到,又看了几遍题,应该是没啥问题了。

看 T2。T2 感觉条件给的很奇怪,先冷静分析一下,发现每次选删除所有边之后选择的点集应该每个点都在一个连通块里,那应该是每次删一定要删一整个点双。并且选择的点双需要是相连的,不然连通块数量不够。

那么建棵圆方树,然后应该是跑树形 DP 之类的吧。但是连通块大小感觉看起来就很树形背包啊,这怎么低于 \(O(n^2)\)

先思考了一会 \(k=0\),那么显然连通块的大小只有 \(O(\sqrt{n})\) 种,我们可以枚举一个连通块大小。然后跑个树形背包,这样就 \(O(n^2 \sqrt{n})\) 了。差的好多。发现大小不用开满,是一个调和级数,那么其实是 \(O(n^2 \log n)\) 的。

发现 \(k=1\) 可以用完全一样的方法做,看眼分发现能拿 65 分了。但是还是比较希望能把 T2 推出来的,所以又想了一会。看看时间,还有三个小时,感觉可以再多想一会。

又思考了很久,感觉这题复杂度要不然就是枚举连通块大小 \(O(n \sqrt{n})\),要不然就是调和级数 \(O(n \log^2 n)\) 的复杂度,感觉前者复杂度很像,但是完全想不到这题怎么抛弃树上背包,啥都想不出来。这一个小时趴着想,疯狂走神,最后反正是啥都没想出来。还有 2h,不能再浪费时间了,先看 T3。

T3 看了看,感觉题意很怪,然后抽象了一下,接着想。发现 C 性质可以写成纯 DP 式子,树剖一下可以快速带修维护。但是代码感觉要写很多,而且分也不多,就先放放。一般情况下是对集合的 DP,首先感觉可以 dsu on tree 拿很多分,看了看确实很多。有没有可能实际上最后答案是所有数的集合的前 \(k\) 大,然后套性质 C 的做法?没咋动脑子,写了个暴力验证,然后发现答案错了。仔细思考一下发现可能数被删之后又多出来空位,这个完全是假的。寄。再想想,可不可以按照 dsu on tree 的思想,重链剖分动态维护 dsu on tree?想了一会没啥思路,感觉想出来也肯定打不出来,这个电脑的响应速度我根本没有耐心调复杂的题,写个 dsu on tree 暴力跑路了。

然后还有大概 1.3h 左右,赶紧去写 T2 的 65 分了。然后写了半天,小样例过了,跑大样例,WA 了。

此时还有约 0.7h,很急啊,然后又找了半天错,最后发现好像是圆方树写错了。完了,我之前没打过广义圆方树,难道广义圆方树的建树方法与普通圆方树不一样?不对吧,应该是一样的吧。完了我是不是连普通圆方树都不会打了??

然后开始调板子。调了半天,尝试了好几种写法,大样例都没过。此时还有 20min。

麻了,这能调出来就见鬼了。心里已经慌了。先赶紧写个 \(O(2^m)\) 的暴力吧,没准还能拍下看看。然后写暴力,拍,拍出来了一组数据。输出了一下,果然是圆方树建错了。

你妈的,你妈的,你妈的,圆方树怎么写,圆方树怎么写,圆方树怎么写?

换了好几种写法,全过不去。12:55 了已经,感觉没戏了,甚至没造树的数据看后面写的 DP 是不是对的。麻了,但是感觉如果 DP 没写错应该还能拿几个树的分,还是把原来代码和暴力合一块交上吧。又瞪了半天还是想不出来咋写,寄了寄了。12:57 关虚拟机删文件了。然后关虚拟机的时候电脑突然卡住不动了,直接给我吓住了,还好过了十几秒好了。赶紧删完文件整压缩包,然后趴在桌子上。

最后甚至没有看树的部分分有多少,反正就抱着 100+25+48 的纯大众分去了。

心里一片茫然,感觉 Day1 寄没了,怕不是达不到大众分。结束了,站起来之后,等着老师检查然后走。我一直扶着椅子低着头,内心非常茫然。突然意识到这场我都干了些什么,策略跟屎一样,打的完全爆炸。

出考场,人彻底懵了。低着头走了一路,听到前面有人喊我,一下子绷不住了,直接开始哭了。APJ 你就这水平?时间分配狗屎,该会的题不会,打部分分都打不出来,你是什么弱智?

一个人停在道路中央,站了好久。

上了车,自己一个人低着头坐着,人傻了。到宾馆有家长叫我,我没回。彻底崩溃了。回宾馆就趴着了。

恢复了一下心情,下午接着颓,然后就是无脑颓了一整个下午,然后心情平复了很多。晚上教练担心我,来看了我一眼,跟我妈打了个电话,然后就睡觉了。

Day 2

起床感觉很困。不知道今天应该期望什么了,就放平心态考吧。

上厕所,吃饭。早上喝了一杯咖啡,我平常不喝咖啡,然后我问咖啡有什么用,被告知有心理作用。那没事了。

在大厅等着的时候问 LYinMX 今天我要啥策略,他说就正常当模拟赛打呗。我说昨天我当模拟赛打已经死的很惨了,他说你就正常发挥就行。

上车,这次心态没昨天早上好,但是平静了许多,因为不敢有啥期望了。

进考场,这次发现在二考场,进考场之后发现二考场电脑就是要好,而且这次不挨着窗户,感觉心态先好了很多。然后就趴着等开考。

开考,照常开虚拟机,看题面。看了一遍题,博弈论,博弈论,计数?什么鬼东西,这场是 AtCoder Round?看了眼 T1,这不就 ABC 某个 Ex 那个 Game on Graph 吗?当时赛时没写出来,后来被 happyguy 告知直接跑拓扑排序就行。赛后那题我没改,但是我知道这题要用拓扑排序,感觉心里有了点底,我应该是能搞出来的!

T2 感觉给的条件很精妙啊,感觉应该可以直接连边建图,然后就能找出来一些性质。T3 题面极长,看起来感觉像 DP 套 DP?但是这个数据范围很奇怪,感觉不像,直接等着打暴力吧。

配置虚拟机,明显感觉这个电脑流畅的很多。这次感觉应该还好。

然后开 T1,直接建图压状态点数是 \(10^6\) 级别的,\(T=10\),感觉复杂度很对。直接开始写。

先判断先手必胜、必败或平局,想了想,可以考虑魔改拓扑,然后每次如果有必败态那就直接把所有入边的点设为必胜态入队列。状态 DFS 搜一下吧,直接枚举感觉无用状态太多。

然后写了一下,胜负判断对了。然后想怎么找最大最小。一开始想着直接 DFS 随便跑下,然后发现样例最后一个答案是 INF。感觉好像环的影响还是很大,所以还是回去拓扑排序吧。想着这次跑个普通的拓扑统计答案,但是还是不对。

1h 过去了,感觉有点寄,但是问题应该不大。又想了想,感觉还是直接在判断先手胜负的时候同时统计答案吧。但是这样需要有一个优先队列,这不必寄。哦胜负只有两种,直接开两个队列行了。然后又调了一会,样例过了,大样例也过了。但是大样例跑 0.5s,时限 1s,这容易出事啊!

然后找大样例里面哪个点跑的最慢,复制了十遍,直接跑了 1.7s。果然问题很大。然后开始疯狂卡常,把 STL 全扔掉了,改成写链式前向星。发现只需要存反图,然后把正图删了。又卡了一会,大样例现在跑 0.17s 了,感觉很快。

试试最大数据。造了个全空的数据,复制十遍。1.7s。你妈。

此时已经快 2h 了,感觉再卡常没有意义了,这个复杂度应该没啥问题,应该不会重点考察卡常把。果断扔掉,看 T2。T2 特殊性质很多啊,一个一个看。发现第一个性质是判断有无解。考虑按照一开始的思路建图,这样相当于每条边要选取两个端点中的一个。发现这简单分类讨论一下即可,要不然是树,要不然是基环树,其它情况显然无解。还有一些固定的选取点,那么树上最多可以有一个固定的,基环树上不能有。这个全部写并查集简单维护一下就行。

看性质 B,发现性质 B 就是一个环,感觉这证明我一开始的思路是对的。对于一个环,只有两种选择方案,把式子写出来,然后发现直接按照贡献讨论即可。要不然没有贡献,要不然可以给两种方案中的一种有贡献,要不然可以选择给两种中的一种贡献。统计四种情况各有多少,然后很容易得出答案。

性质 C 和 性质 D 感觉和前面说的做法就没啥太大关系了,所以就直接思考前面的想法。基环树上发现一个环固定了,剩下的树的选择一定固定,这个好统计。树上如果有一个点固定了剩下的也可以固定,那么就剩下纯树的情况了。

上来先口胡了一个 DP,推了一会但是不太知道如何枚举 Alice 的选取方案。又把式子化了化,然后发现 Alice 应该是贪心的按照一个顺序选取,好像可以直接每次这么做?但是感觉思路很乱,想不出具体的式子与怎么实现。要不然先写写试试?

突然感觉肚子开始饿了,然后吃了块巧克力。

还有 1.5h 左右,赶紧开始写吧,先写了一个性质 A。样例过了,确定转换没问题,然后开始写一堆 DFS。写着写着突然意识到我还得存每条边的编号,还得判断一堆东西,感觉细节多炸了。然后把基环树找环也写出来了,开始想树。然后突然意识到,Alice 是需要最一开始就把所有边的策略全部定下来,如果按照我的 DP 方式,Alice 每次只定了这个点的出边的方案,并没有定所有方案。寄,假了。又想了想,感觉树实在是没什么思路了,算了,咕了。

发现性质 C 的时候,树的情况是好处理的。但是感觉自己的状态不太可能能调出来这个巨大细节题,所以还是弃了。把性质 B 写了。

写完发现样例没过,然后突然意识到一件事情,X 指的是相同的数量不是不同的数量。日,我读错题了!!还好环的做法没有太大改变,还是可以做的,然后又把环的写了。回去思考了一下树,感觉没准是可做的了,但是时间不允许了。然后赶紧把 \(O(2^{n+m})\) 的暴力写出来了,已经 12:45 了,赶紧胡个 T3 暴力。

把 T3 题读完了,发现题怎么这么复杂。看有什么部分分,发现没啥部分分,寄。\(t=n\) 的好像可以 DP 找划分方案数,然后可以做第一问。第二问题没看,直接写 DP 了。感觉这个 DP 好熟悉,我之前肯定写过一模一样的 DP,但是忘了是啥题了。写完了,跑样例,输出 0。

麻了,反正只有 5 分,算了算了,12:55 也不可能找出来为啥了,回去再检查几遍文件名就删文件打压缩包了。

然后就坐在那里,等待结束。估计 100+40+0,分不是很高,反正已经不报希望了,就这样吧。

出考场,这次跟别的人交流了交流,发现好像考的都不咋好。然后就回宾馆拿东西走人了。

Day 3

看了看小图灵,D1T2 居然还拿了一些分,但是也不好说是咋拿到的,所以还是等 CCF 数据。D2T1 没有 TLE,而是 WA 了一些,感觉这下就没底了。但是考的这个垃圾分在 HE 排的挺靠前,我只能庆幸自己不在强省了,要不然这个分真的没得看。

再看了看别人的游记,感觉 D1T2 的 \(k=0\) 是好做的,分析一下选边的条件就容易做出来,\(k=1\) 还是没啥清晰的思路,但是感觉这个题确实应该是我能力范围之内的。不过还是做不出来。D2T2 应该和正解的思路完全一样,但是树的情况确实想不出怎么做,题读错了也挺弱智的,总结感觉还是时间分配差,状态没有。难过其实确实不是因为丢分,因为分不高,主要是因为自己在考场上想了很多却多拿不了分,思维不到位,即使有了些进步还是做不出题,我不知道我差在哪里,要怎么做才能提升,很迷茫。

我妈说和我水平差不多的一个人这次省选 400+,感觉这次省选 400+ 确实是可以做到的,但是我还是太弱了,真的做不出来 D1T2 和 D2T2,需要一些深度思考的点我就想不出来,这我确实还是菜。

这次打的说实话挺自闭,感觉自己像是这一年啥都没学的样子。

只能说自己在 HE 挺幸运的,但是最终还是要看国赛啊。要是国赛我还这么打就又冲着 Ag 去了,这次省选让我深刻的感受到今年冲 Au 是没希望了。可能必须要明年再战了。

最后总结:做题策略太差了,我还是菜。

whk 咋补啊?