ZJCPC2025 游记

· · 生活·游记

为了保持用语文明,对一些不文明用语进行了替换。

注:Day 0 为 2025 年 4 月 25 日

Day -?

由于神秘原因,Tea mAster 只剩下了三分之二,所以去掉了队名中的第 3,6,9 个字母后队名变为了 Te mAte。

hzgang06 指定 dalao_see_me 来成为【Te mAte】的重要拼图,konata 指出 dalao_see_me 来了我们就能躺赢,所以队名可以紧跟 MVP 时事,于是最终队名敲定为 Te_mAte MVP。表明加入的 dalao_see_me 是 MVP,DeaphetS 和 konata 都是躺赢狗。同时将队名中的下划线替换为字符串 am 则可以变为 teammate MVP,完美契合队伍主题。

#define MVP dalao_see_me

Day 0

整了个校内热身赛,题目选取自过去若干年的南京区域赛热身赛题。后面又加了道自己觉得很有意思的经典签到,题单如下。

MVP 抽空来机房秒了 A 和 G,konata 充分发挥人类智慧过了 C 和 E,DeaphetS 过了最水的 B、D、F。最后依靠某不讲武德的减少罚时的方式成功反杀原神。

晚上在宾馆房间同时开着电脑和电视观看世锦赛,希金斯拼尽全力拖进抢黑结果最后黑白双进有点难绷。

Day1

赛前,konata 作出了要 cosplay 像素原神队的重要指示。

领取比赛物资。成功对崽子们说出【我去拿资料袋,你就站在此地不要走动】。由于 hzgang06 的高瞻远瞩,通过在报名信息中填上所有教练的名字成功拿到了 4 份教练袋子。今年手上的袋子数量为 6+4=10 个。后续成功建立压缩文件【教练资料袋.zip】。

热身赛【正式版】

入场座位在一个很抽象的位置,中间那个人的位置被柱子挤压到几乎没有生存空间。好在旁边的位置是空的可以往旁边扩展。

A 被 MVP 秒了,B 被 MVP 秒了但是一直莫名 WA,D 被 konata 秒了但是 DeaphetS 并不想写,同时 DeaphetS 以为自己秒了 C。

后续 D 交给 MVP 写,过了;B 最终让 DeaphetS 重构不知道为啥就过了;C 交给 MVP 写后发现有点假,感觉正解写起来比较麻烦于是开摆!

正赛

MVP 正开,DeaphetS 倒开,konata 如开。

起手看 M,太长跳过。看 L,发现是个奶龙题直接开写,写一半发现假的离谱,才意识到是个 P11842 [USACO25FEB] Bessie's Function G 的超级青春版之基环树上 DP,于是将这题交给了 MVP。

这时 MVP 已经会了 B,轻松 13 1 try

DeaphetS 会了 I,在简短交流后打消了将 I 交给 MVP 写的想法,之后 20 1 try

把机子交给 MVP 写 L,39 1 try

konata 会了 E,但是和 DeaphetS 一致认为不好写,后面再说。DeaphetS 看了 K,表示如果能 O(n) 或者 O(n\log n) 完成对一个数组是否 wavelike 的判断,那么套上经典倍增二分技巧就能轻松解出。【两位开题鬼才】

同时 konata 会了 F,上机开写。此时 MVP 对 D 题题意产生疑问,DeaphetS 查看题面后也一脸懵逼。最后根据样例枚举题意成功猜到了正确题意,得出了正解,并将写这题的任务推给了 MVP。MVP 在经过一番波折后 63 2 tries

konata 继续和 F 搏斗,MVP 下机后不久就会了 A 的回滚莫队。之后二人轮流 WA 题,最终 A 题 112 5 tries

之后 DeaphetS 开启了他的战犯表演,先是提出了 G 题可爱 O(Tnk) 的贪心做法并认为如果 t_i 是实数的话应该是纯按 l_i 等比例分配,按照这个错误结论搞出了先估算 t_i 的初始值再贪心的做法,时间复杂度 O(Tn^2) 遗憾没过样例。

t_i 初始值调成 0 开始贪发现猜的结论假了,于是对着样例二不断调整 k 打表试图发现一些分配规律。

此时在 MVP 的提醒下 konata 发现他把 F 题题意看错了,题目是有向图但是他看成了无向图,趁着他们重新讨论做法的时间 DeaphetS 继续在 G 题表演。

首先 DeaphetS 虽然没有发现初始的分配方案,但是发现了 k 足够大时差分数组大致不变,于是提出了先从 0 开始贪心直到所有的 t_i\ge 1,然后整体抬升,最后进行 O(n) 次调整,时间复杂度 O(Tn^2\max (L))。交上去 WA 了,于是霸占机子开始写拍。拍完发现我钦定了 l_1 是全场最小值,改了下交上去 T 了。接着【改了下交上去 T 了】\times 2,交出机子给 MVP 写 F,164 3 tries

DeaphetS 找到了 G 的初始分配方案:t_i=100(1-\frac{1}{l_i})。之后考虑枚举整体抬升/下降的值,如果是下降可以直接从 1 枚举到 100 进行判断,如果是抬升则直接除一下即可,最后剩下不到 n 次调整直接贪心,时间复杂度 O(Tn^2+Tn\max(L))169 5 tries

konata 秒了 C,但是 DeaphetS 完全不想写,准备把锅推给 MVP,这时出现了一段时间的空机。MVP 完全懂了 C,但是他要去上撤硕,于是机子又空了。

空机状态下和 konata 讨论了 J,发现是个可爱博弈。konata 不断描述他的高妙做法,我不断【直接模拟即可】,达成一致后以为已经 win 了,却完全忘记了这题是多次询问。

冷静下来后发现可以直接对询问离线然后直接维护每行的分界位置,能够做到 O(q\min(n,m)),konata 提出了 O(\log) 维护的做法,但是 DeaphetS 表示听不懂,只会根号。

MVP 不知何时已经王者归来,C 204 1 try。DeaphetS 上机写 J,写完求所有分界位置的部分后一时间犯可爱不知道怎么求必败点位置了。同时 konata 和 MVP 讨论出了 M,退下来把机子让给 MVP。

再次冷静发现其实就是【直接模拟即可】,但是要用栈来维护由可选列构成的若干个区间。期间 konata 再次提出了 O(\log) 维护答案的正解,但是 DeaphetS 完全听不进去。

MVP 的 M WA 了。上机写 J,也 WA 了。下机思考。

检查代码发现了若干可爱但是完全不影响正确性的错误,比如初始化时 n 打成了 m 但是由于 n\le m 所以不影响。后面在我的代码中发现了如下玩意:

  for(int i=1;i<=n;i++)
  for(int j=1;j<=m;j++)
    s[i][j]=s[i][j-1]+a[i][j];
  for(int i=1;i<=n;i++)
  for(int j=1;j<=m;j++)
    s[i][j]=s[i-1][j]+a[i][j];

原来是偷懒不想用容斥写二维前缀和,改成两次 for 循环求但是忘记把 a 改成 s 了。

此时 MVP 的 M 成功 271 2 tries,DeaphetS 上机修改了一个字符后 271 2 tries again。(喜欢我们 20s 过两题吗)

此时 10 道签到都过完了,最后剩不到半小时,大家都不想写 E。MVP 开始想 K,konata 开始看榜,DeaphetS 开始喝水。

MVP 大概会了前半 O(n\log n) 求解的部分,但是时间来不及了,全队决定开摆!

DeaphetS 上机妄图打开扫雷,队友们害怕违反纪律作出了阻止。之后对榜单上的队伍进行了若干锐评后准备提前离场,中途被神秘小哥赠送了 Hydro 小挂件。

闭幕式

群里临时通知闭幕式提前了,还好赶在讲题开始前带着能带上的崽子们到了会场。

有若干个崽甚至讲题开始的时候还在吃饭。/fn。

讲题的时候礼堂很空,难绷。

听了几道题的做法,感觉都很牛,但是都和我们队的做法不太一样,更加难绷。

感觉出题人还是挺手下留情的,A 题没卡根号 log,J 题也没卡根号做法。

E 题果然是开场 konata 想到的那个做法,/bx。

H 题怎么又是个杨表题,一看就知道是某人出的。

K 的做法也和 MVP 想的差不多,不过当时确实来不及写了。如果每个人都少战犯点或许可能有点机会。)

水群,原来 AHK 都是辣辣出的,不愧是大毒瘤。E 题最短解 4.5K,也是很难在半小时内写出的,感觉最后时刻摆烂的决策很对。(x)辣辣锐评 15min 足够写出 K,或许这就是 ClariS 吧。

本来想着趁着滚榜前肝下烤的活动,粗略算了下如果想进前 10000 需要至少打 14 把 5 火,直接摆了。wl 活动恐怖如斯。

滚榜,最终全场排名 rk7,放在正式队里可以排第三,仅次于两个 ZJU 的队,算是不错的结果了。以 6min 微弱优势险胜 HDU1,win!

总结

神父写了 7 道题,评分 13.0,神父得了 MVP!

有至少一半题目的做法都是 konata 提出的,konata 是最强大脑!

DeaphetS 只过了 3 题,评分 3.0,DeaphetS 是躺赢狗!

写游记真爽,下次接着写。