GDOI2025 游记

GDOI2025 游记

day-0

早上训练,开了一个会,写了一些注意事项:

  • 先写暴力,可以验证题意,也能方便对拍。
  • 不要对着样例硬调,可以自己造一些样例,样例是给你验证正确性的,不是用来调试的。
  • 不要想过长时间,也不要调试过长时间,特别是第一题,不要想着自己一定要过第一题。
  • 题目难度不一定递增,每个人擅长的方面不同,你不会的题别人也不会,你会的题别人也会,重点在不会的题要尽量拿更多部分分。
  • 要 bfs 式想题。
  • 好好休息,心态要好,比赛时不要关注其他人在干什么、写了哪些代码、做了哪些题了。
  • 赛后不要想着自己的分数。

下午去试机,电脑配置是 win11,但是 win 键被禁用了,ctrl+w 也用不了。

晚上在酒店里聚餐。

day-1

早上 6:35 起床,老规矩早餐喝咖啡。因为酒店离考场有三十分钟的车程,于是七点二十就发车了。

八点半开题,首先把 vscode 的快捷键调了一下,中英文输入法的切换调了一下,然后写了一个文件头。

看到 T1,考虑枚举中位数,判断是否可行,离散化以后一段区间都是等价的。想了很久中位数有哪些性质,然后突然想到一个结论就豁然开朗了:如果能选中位数则尽可能选最多的中位数,这样一定不劣。那么剩下的是对 \(r\) 小于中位数与 \(l\) 大于中位数的求和,先算前缀和然后二分即可。时间复杂度 \(O(n\log n)\)。拍完时是九点半。

然后 T2 是有向图上维护一个「数据结构」?发现自己只会 \(O(nm)\) 的暴力,想了大约一个小时没有获得任何性质分的解法。

于是等不急了,赶快开 T3,首先思考加写暴力花了大约一个小时,因为一直在想树的性质都一无所获。然后继续想树的性质,终于在最后一个小时的时候,想到了一个看似很对的做法,首先子树一定不交,然后可以将自己与所有子树的最小值排序,依次插入。我实现了这个做法,结果发现 windows 不能开大栈一直都测不了大样例,想用虚拟机结果很卡。最后十分钟,大约是发现只能过链的档。但来不及改了。

最终估分 \(100+20+8(+)=128(+)\),是大众分。

出考场后,发现我似乎想错了,森林的档也并不是树的档的简单叠加,而是每个树都可以互相穿插的。而且开大栈只需要更改 tasks.json 里的选项即可。

day-2

今天试图超越大众分。

T1 感觉很像之前 abc 的某道题。我想先写一个 \(O(n^2)\) 的暴力,按 \(t_i-|a_i-b_i|\) 排序选,一个小时写完这个暴力,然后果不其然错了,原来发现要按 \(t_i\) 排序选,于是改了以后发现大概是对了,于是直接上线段树优化,维护区间覆盖、区间加、区间递增的标记,信息维护和、最小值、最大值,复杂度 \(O(n\log n)\)

T2 想到可能是矩阵树定理,然而发现又和 day-1 如出一辙,没有发现任何好拿的部分分。我把第一档暴力写完后,发现过不了第二个样例,这时决定先不浪费时间,先去写 T3。

T3 试图写递增的性质,然而不会写,于是只写了一个 8pts 的第一档,然后我认定 T3 拿不到更多分了,于是回头去写 T2。

这时把第一档暴力换了一种方式实现,然而还是错了,我又试图通过容斥加矩阵树定理过掉第二档性质,然而发现不会容斥。

最后剩下十多分钟了,没办法了,开始检查。

最后估分 \(100+0+8=108\),应该比大众分低了。

下午就返校准备恢复文化课了呢。

总结

这次比赛打得还算可以吧,已经把两天的第一题都做出来已经足够了,去年可是一道题都没做出来呢。

两天的后两题给的部分分都不太好拿,可能也是做的题不够多经验不够丰富导致的,没有往正解的方向想,所以都没有拿到什么分。

后日谈

upd on 2025-03-06:

实际分数 \(100+20+32+100+4+8=264\)。获得纪中 15,而 284 是纪中第 8。

原来 D1T3 过了树的档,赛时在 windows 系统下没有大栈因此跑不出来。

这次比赛的差距在于 D1T3 没有过掉森林的档,D2T2 没有把暴力写出来。

如果 D1 能够及时收手 T2 多花一些时间在 T3 或许就能想到森林的档,而且也不会没有时间测大样例。

posted @ 2025-02-28 11:36  dengchengyu  阅读(40)  评论(0)    收藏  举报