ICPC 2024 昆明站 游记

离散小波变换°

2024-12-05 00:44:39

Life & Travel

难得写游记,上次写游记还是上次打 NOI 的时候了……

不过说是游记,其实就是流水账。没有什么特别的思考,纯粹是一时兴起写的文章。

Day -1919810

完全不知道应该怎么博弈……

队内的意见是成都:昆明=2:1,于是决定通过 roll 骰子来决定是去昆明区域赛还是成都区域赛。

大失败,似乎预示着不太好的事情。

Day -114514

因为没去成都,所以去了济南,三个人同时卡题,打银了。

在上个赛季因为在多数时候都有至少一个队员头脑清醒做得出题目所以没卡,结果这个赛季就翻车了。复盘觉得应该调整一下做题策略,如果出现卡死在某道题目的情况下应该立即切换进程,以防遭遇不测。

Day 0

本来想着通宵坐第二天早上的飞机,结果 5:00 决定躺一会儿,结果眼睛一闭一睁干到 7:00 了,差点没赶上飞机。幸好东西都收拾好了。

因为赶路,所以板子没拿;比赛前买的 fumo 也没来得及带过去……这里放张图:

以后还是得注意一下时间,订不早不晚的飞机容易导致不幸……

下午到了宾馆,面到了小粉兔还有 xht。晚上一起出去聚餐,似乎是傣族特色店。大家化身原始人戴上手套食用诸如手抓饭等等,挺有意思。顺便体验了一下共享电动车。这东西在昆明似乎挺多,还算方便(虽然有些路段没有非机动车道,在人行道上骑行很颠……)

不知道为何同一家酒店但是有两部分房间地址,所谓别墅区离大堂还挺远,不过据说有额外设施比如客厅以及没有锅的灶台。晚上和 uz 一起玩了几关 peko park。还挺有意思,不过可能人再多一点会更好玩一些。

Day 1(热身赛)

中午去打印了一下没有带过来的板子。在图文打印店见识了超大的订书机以及超大的订书钉,可以一次性把五十张纸钉在一起。神奇。

我们队伍的板子公开放在 https://hourai.nanani-fan.club/ 下面,如果有需要可以自取。不过我们队其实还有另外一份板子,补充了某些前者没写上的内容。

因为云南大学很大,所以热身赛迟到了(骑电动车跑了二十分钟才从北门跑到东门,为什么似乎每一个学校都比工大大好几倍???)。不过似乎不太要紧。前两题没看,第三题随便写了个递归构造,第四题猜了个结论就过了。后两题还是挺有意思的。除了比赛场馆比较挤,别的条件比如纪念品都挺好。我们队伍坐在第三排,转身就能看到大屏,很方便。厕所不大,似乎很有拥塞的可能性。

打完热身赛去食堂吃饭,听说午饭风评不是很好。点了米线,我感觉还行,但似乎队友不是很喜欢。

晚上管理组开会,开了两个小时,虽然前一半我基本上没在发言。讨论环节达成了某些共识,可能会在最近时间上线一些神秘功能,敬请期待。(画大饼环节)

因为第二天比赛,所以休息得比较早,不过也没有怎么训练就是了。

昆明站是本赛季 ICPC 的最大赛站,正式队伍一共来了 450 队左右。不过根据前瞻情报似乎并没有很多强队过来,比起去年西安站其实弱了不少。我们队伍计划在昆明或者香港站出线,如果能在前者提前完成目标就最好。

Day 2(正式赛)

吃完早饭,乘大巴前往赛场。

领队老师第一次带 ICPC 队伍,跟她科普了一下 ICPC 的奖项,顺便聊到了杯子。不过我们没有很大信心能捧杯。现在看来还是挺巧合的。

下文做法剧透警告,如果希望 vp 请不要阅读,建议跳到赛后部分。

下文做法剧透警告,如果希望 vp 请不要阅读,建议跳到赛后部分。

借助场地优势,前期能够很快看到榜上哪些题目被通过了。队友秒了 M 题签到构造,我做了一下 H 题计算几何签到。把计算几何放在签到题还是很别致的操作,碰巧的是前段时间训练被一个极角题卡烂掉了烙下心理阴影,但是看到清北队伍九分钟就秒了,尽管担心被卡精度,还是直接 \operatorname*{atan2l} 硬上。写了个弱智二分答案,不过似乎不需要,降智了。另外一个降智操作是数组开小导致挂了一发。

接着队友讨论了一下就把 J 和 L 写完了,然后开始做 C 题。我因为看到小 w 很快拿了 G 题一血,所以想了很久 G 题。一开始想着利用某些性质做 dp,后来发现只要把题意稍微转化(只要 a,b 不互质,就将他们除以 \gcd,这样每次操作就变成选择 a 或者 b 然后减一)就能发现一定存在一个大约 2\log a 次操作的方案。于是只要写一个不需要记忆化的 \mathcal O(2^{\varepsilon+(2\log a)}) = \mathcal O(a^2) 的搜索就过了。

接着去看了一眼 E 题,发现所谓交互完全是个壳子。给定若干个变量,每次询问可以得到某些元素的异或和,这不纯纯解异或方程组么!数据范围很小,干啥都怎么暴力怎么来,暴力 Floyd \mathcal O(n^3) 求两两距离,暴力枚举 \mathcal O(n^2) 种可能确定哪些路径长度为 k,再暴力往方程组里插入,总复杂度达到了惊人的 \mathcal O(n^4/w)。不过因为 w=64,所以估摸着没比 \mathcal O(n^3) 慢多少。鉴定为板子题,但因为我铸币错误求错结点的父亲挂了一发罚时。纯铸币了。

接着进入卡题时间。在我写 E 的时候队友在试图从 A B D L 里找一道可做题。我听了一下 B 转化后的题意,发现用一个传统矩阵乘法 trick 就做完了(将每个括号视作矩阵,配对的括号使用互逆的矩阵,将括号匹配过程视作矩阵乘法的过程)。然后开码。为了判不合法,还写了栈模拟+rmq,代码长度也是达到了史山一般的 250 行,给我糖丸了。这个时候队友会写 F 了,所以他先上机,我俩在旁边看 B 的代码。

原来是忘记 2\times 2 矩阵求逆公式需要乘以行列式的逆,看了半天没看出来。又降智了。上次矩阵乘法写挂是 vp 前年 EC Final 的时候写反了。

总之把 B 过了之后就等写 F 题了。似乎是高妙 min25 题,但是我不清楚(其实 B 和 F 我都没读题)。调了一会儿,发现过样例了。但是第一发忘记删调试,第二发被卡常。研究了一下抄个 Barret 取模进去,第三发就通过了。此时已经封榜,距离结束还有 50 分钟。

看了一下榜单,感觉优势在我!于是最后 50 分钟成为垃圾时间。交了几发研究了一下 F 题到底常数瓶颈在哪,发现原来是一处 c\gets (a+b)\bmod P 优化成若 c\ge P 则减去 P 就过了。时限两秒,本地只跑了 0.7 秒,不懂数据造了啥。

最后一段时间就是一直在扒排行榜,看了一圈发现除了清北已经没有理论上可以击败我们的队伍了,遂开香槟。

复盘

看了一下题解,居然 D 题定位是 medium 题,但是大家没有太多思路。另外一个应该能做出来的题目大约是 I 题。似乎没有比去年西安站的那个多项式题难多少,但这场没有几支队伍做了 I 题。

整体上整个过程很顺利,除了最后垃圾时间以外机时基本拉满(虽然有一部分时间是用来 debug 了),也没有出现长时间卡题没有思路的情况。如果前期顺利的话,后期可以积累下来非常多的罚时优势,这次因为写挂导致的罚时不算多,很不幸一半都是我贡献的。假如没有做出来 B 或者 F,也可以以 8 题第一出线;不过这样就没有杯子了。

感觉强度不及去年西安。昆明站金线 7 题前半,出线区 8 题也就多了 1 题(如果后面香港站和 EC Final 没有新的学校出线的话)而去年西安站金线 5 题前半,出线区 9 题足足多了 4 题。可能是因为临近赛站终点强队来的少,也可能是今年出线形势普遍更为容易。总结的话是碰到狗运了,题目风格以及开题顺序都很适合。

赛后

滚榜。滚了很长时间,一直到快六点才滚完。这就是大赛站么。

不出意料地拿了季军,但是拿季军整体上还是出乎意料的。似乎我们学校上次拿到区域赛奖杯还是在 19 年(亚军),时隔 5 年重新拿到了杯子,还是很感动。不知道下一次拿杯子会是哪一年了。

领完奖去吃了菌子火锅。菌子下锅二十分钟不准动筷,似乎有一些不煮熟就会见小人的品种。菌子的味道倒是不很意外(毕竟食用菌类很难有很特别的味道?),汤很鲜。尤其后面涮肉后很好喝。唯一不牛的是芝麻酱被清空,很久都没补货。

晚上爽玩 peko park,通关了。

Day 3

早上逛了一下滇池。

滇池很大,虽然也能看到远处的岸边。来的时候对照了一下地图,似乎和我故乡旁边的高邮湖一般大,不过更绿一些。滇池比较有特色的是海鸥。似乎是从俄罗斯那边的贝加尔湖迁徙过来;不过海鸥真的能迁徙这么远距离而不迷路么?以及贝加尔湖和滇池严格意义上都算不上海洋,这样还能叫做“海鸥”么……

拍了一些海鸥照片,但离得都比较远。本来有一包饼干,但是放在酒店没带过来,没有投喂。

总结

打得很爽!不过飞六个小时的飞机还是挺累的,如果可能的话还是希望选一点近一些的赛站……