【2022 - 2023 赛季】
本文同步发表于我的 洛谷博客。
二月中旬忽然听说今年的 thupc 以线上的形式在 3 月 5 日举行,虽然仍没忘记去年爆零的美好回忆,但还是抱着试一把的心态报名了比赛。高中部的 lpf、tyq 和队爷 wlq 已经组成了一 队,于是乎初中部的 ntz、hwd 和我也就自然组成了另一支队。队名一直没想好,改了好几次,最后还是决定仿照高中队的名称,

报名结束后就把这事忘了。
星期天早上醒来忽然想起今天有 thupc。不妙!比赛即将开始,我却连比赛时间都不知道!赶紧登上网站看看......
此时已是十点半,距离比赛不到半小时。得知时间后我便光速吃完早饭,飞快建立比赛目录,敲好模板程序,并与队友商量好策略:我开 ABCD,hwd 开 EFGH,ntz 开 IJKL。
比赛因用户名密码发放过晚而延期 10min,而我也有更多时间准备充分。五分钟后,一切已经蓄势待发,我紧张地看着屏幕上的时间,等待比赛开始。
比赛开始!
网络错误(0)!客户端错误(0)!
我赶忙去官方交流群里看了看,才发现大家无一例外都上不去。正当我以为比赛又要延期时,工作人员发来了题目 pdf,我赶紧转发到队伍小群中,开始看题。
很快把前四题都瞄了一遍,似乎只有 AB 可做。我决定先从题面较短的 B 入手,很明显可以二分答案,然后随便 check 一下,就可以了......吗?
此时有巨大分类讨论,更重要的是 k = 2 时答案是 \(2^n\) 级别的,远远超出了 long long 的范围。此时网站已经恢复,我登上去看榜,发现题目数量居然是 \(13\) 道而不是我先前以为的 \(12\) 道,且过题人数最多的最后一题居然还是极其 easy 的脑筋急转弯。幸亏 hwd 也注意到这点并及时过掉了这题,局势有所挽回。
再次观察榜单,我发现不少队提交了 B 题,却无一例外没过。而此时忽然联系不上 ntz,而过题人数较多的题都集中在最后四道,于是我决定先去看看 K 题。
读完题后我发现这是一道并不困难的贪心,便立即开码。中途发现我的线性实现方法比较复杂,于是重构代码,改用 \(O(n \log n)\) 的方式实现。很快过了样例,提交后便一发 AC。
此时我注意到我们队在本题还有一发超时的提交,疑惑之时忽然联系上了 ntz:原来他也一直在做此题!/px/px/px
于是乎,我们重新规划了做题策略:我开 A,hwd 开 B,ntz 开 H。
看了半天还是不会 A(说到底还是不肯推式子吧),只能看出操作顺序对答案无影响,确定了最终盘面就确定了答案。比赛已经过去了一个小时,我发现我们队和高中队目前齐平,都只过了两题。
随机翻题时发现 J 题很有意思,而 hwd 在 B 题也屡屡受挫,交了两三发后发现做法假了,我便把 A 丢给了 hwd,开始全心全意投入 J 题的思考当中。
起初我大胆地猜测:检察官答案形如 \(\frac{1}{x}, \frac{2}{x}, ..., \frac{n+1}{x}\),走私者反过来就行。本想直接提交,但又怕结论假,便开始思考如何验证结论正确性。
你需要保证,在一方的策略不变的情况下,另一方无论如何改变自己的策略,都不能使自己的期望收益比原来多。
哦?是不是把另一方策略用 \(a_1, a_2, ..., a_n\) 设出来,列式算期望,然后需要保证每项 \(a_i\) 前的系数相同就行?
这时我才发现先前的结论假透了,毫无依据可言,n = 2 时就不符合条件。于是我从检察官的情况入手,从 n = 2 开始,依据系数相同的条件开始列方程、解方程,慢慢扩展到 n = 3,n = 4......
计算的过程十分痛苦。列出的方程十分抽象,解也看上去毫无规律可言,解了半天啥也没看出来 /kk
这时队友已经开摆,我也陷入了瓶颈,打算就此放弃......
看了看榜发现高中队已经把 A 过了,我们队的排名一落千丈,甚至跌出了前 \(400\)。振作!我决定继续硬刚这题。
我把方程列成矩阵的形式,发现这样瞬间整齐了许多。接着我把 \(n \leq 5\) 的答案整合在一起,把解的比值关系用序列的形式列出来,放到 oeis 上一查:

而且和也有规律!

然后就很好做了,代码写起来也很简单。检察官的策略终于搞定了,正当我准备感叹花费半天仅仅完成了本题一半的时候,我惊奇地发现走私者的情况居然是极其简单的 \(2 : 1 : 1 : 1 : 1......\)!
写完!编译!调试!提交!我看着屏幕上的 Running......,等待着 Accepted 的那一刻————

不知不觉间比赛已经过去整整两个半小时了,我们队却仍只有两题。绝望之时,我发现高中队恰好过了这道题,便请教 lpf 这题究竟咋做。在得知自己的结论没有假之后,我开始检查数组大小、long long、取模等实现上的错误,终于在半个小时后发现自己取模写挂,并过掉了这题。
AC J 题之后,我发现剩下的题目都不好做。我把目光投向了除 ntz 和 hwd 正在做的 A、H 外过题人数最多的 E 题,恰巧 “小猫钓鱼” 的游戏我也比较熟悉,便指望着再过一题。很快看出了只要两人的牌不完全相同,都有 \(n\) 次操作的做法,但可惜的是,在当时看来我的思路过于复杂,要分多种情况讨论,正确性还不能担保,最后还是弃了这题。赛后想想,如果我当时继续思考下去而不是直接开摆,说不定我们队又能多过一题呢。
这时看了看群发现 ntz 已经做出了 H,并准备提交代码。我看着提交状态中的 Running on test 1, 2, 3, 7, 13, 19...... Accepted!真是太强了!/bx/bx/bx
而 hwd 也向高中队问到了 A 的做法,但是他在实现时莫名奇妙挂了两发,最后我和 ntz 也各自写了两份代码,都一发过了。这样,我们终于在距离比赛结束还剩一个小时的时候,取得了 AHJKM 五题的好成绩!
高中队此时却仅仅过了 AJKM 四道题。不久榜封了,眼看我们队难以通过更多题目,我便不再尝试,开始摆烂,直至比赛结束。
不久便到了讲评环节。我意识到 E 题的正解与我起初的想法相差并不远,稍加优化便可通过,真是可惜!之后,我又了解到毒瘤大模拟 I 题标程居然长达 19k,各种各样奇奇怪怪的科技题,还体验了愉快的读评论环节。讲评过后,我把 E 题补完就回归 whk 了。
总结
这算是本赛季我打得不错的一场比赛了,在经历了 NOIP 的全面炸裂与 WC 的自闭打铁后,状态也算有所回升。
省选加油!