APIO2023 游记

似乎是 A 类选手捏。

Day -1

上午在学校打 APIO 前最后一场模拟赛,似乎是信心赛,四个取模题。T1 一个矩阵树板子,T2 随便推推莫反,但一开始看错题少乘上一个系数虚空调试 0.5h。T3 一个 dp,对着转移分讨硬优化成线性,然而步数少个 $+1$ 调了 1.5h,浪费巨多时间。T4 求凸包面积的期望?似乎计算每个点对形成的有向边出现在凸包上的概率即可,写个 $\mathcal O(n^3)$ 的暴力然而没处理好三点共线,又调了巨大多时间。最后想到旋转卡壳能优化到 $\mathcal O(n^2 \log n)$,然而来不及写了,喜提 345。

怎么 9 个人 AK 啊,hbxql。为什么学校 OJ 1300 的 rating 打 rank 12/50 也掉分啊,什么破机制。larryzhong 喜提 rating +1381,已经 6000 多分了,距离实现共产主义又远了一步。

中午在 E202 见到了 ZJ 队长 hzy,orz。

下午 3 点多去华山饭店报道,排队的时候前面是 Qiuly,再前面是 zak,感觉被薄纱了。排了将近一个小时,tzc 一直在大厅转来转去,但是他怎么没报 APIO?那他来干啥。秩序册里的名单一个 nw 的一个 hb 的交替出现,怎么这么魔怔?ducati 被分到和 sjc 一个房间,但是 sjc 来了又走了。到了房间发现室友 gzy 已经把行李放过来了,于是自己换完衣服也下楼吃饭了。伙食还和去年一样好,但是人太多了,队排的老长,怎么有种 nw 初中扩招但食堂不扩建的感觉?

开幕式被同学拉着去看了,你校初中生怎么都这么成熟?比我不知道强到哪里去了。zxx 好闪,节目都很不错,不知道比春晚好到哪里去了。为什么 namelessgugugu 不穿着 nw 校服上去跳舞?

晚上房间里很热闹,然而我不会打饥荒(悲)。

才发现忘记补今天 T4 了。哦,还有昨天的 T2。

夜里蚊子好多,原来是忘关窗户了。凌晨 1 点才正式睡下。

Day 0

5 点就被蚊子叫醒,外面的天居然是亮的。不过实际到了 7 点才起床。

吃完早饭去听字符串,感觉 xtq 把基本子串结构降的挺好懂的,至少我听明白了。

吃午饭,然后回房间摆烂。摆到两点半说要签到,什么玩意?去报告厅继续打 richup,但是写一个解释器和 OI 有半毛钱关系?话说自己以前粗略地看过编译原理,但觉得实现起来巨大抽象,原来还有 flex 这种工具?挺有意思的。不过没听明白,但不如打 richup。

继续摆到晚上,这下早点睡了。夜里蚊子比昨天少点,但我眼力极好、手速极高,每次出手主打一个稳、准、狠,每次都是一拍即中。

Day 1

怎么提前一个小时试机啊,真的要花那么长时间吗?《送餐到机位》感觉很抽象。到了 10 点准时按了开始比赛的按钮。

先读题,T1 题面好长,但看完感觉非常可做,怎么 $K \le 30$ 有 97 分?看来 $K$ 大的应该是诈骗。T2 一个数据结构,具体细节先不看。T3 怎么是通信,怎么还是造计算机?幸好我玩过 NandGame,感觉要留 3h 刚这个题。

那显然是正序开题了。先把 $K \le 30$ 写了吧,不就是一个分层最短路吗?这么没技术含量。几分钟就写完了,直接交,根本没在怕的。queue 好久,先看眼 $K > 30$ 吧,这不就跟 30 取个 $\min$ 吗?这就切了 T1?那直接去看 T2 好吧。

这个 T2 一眼枚举中位数,然后转换成 $-1,0,1$ 的序列。然后怎么做呢?$5 \times 10^5$ 还 1.5s 感觉正解肯定是单 $\log$ 啊,那就往这方面去想吧。先看眼 T1 测完没有。捏麻麻,怎么开场 10min 就要 queue 10min,这还怎么活?怎么 T1 还挂了?高贵的 wrong answer,连 $n \le 3$ 都没过,真是小丑了。手玩了若干组 $n = 3$ 的数据,原来 $arr = 0$ 但不可达的点不能和超级源点连边啊,那赶紧修了再交,继续想 T2。此时已经开场 30min。

根本不会带 $\log$ 的做法啊,怎么办啊。但是我好像会 $\mathcal O(n \sqrt n \log n)$ 了,直接对于出现次数 $\le \sqrt n$ 的枚举左右端点,$> \sqrt n$ 的做二维偏序,感觉常数挺小啊,至少能过 $8 \times 10^4$ 吧。不如再去看眼 T1 的评测结果,这下从 15 变成 40 了,怎么 $n \le 3$ 还没过?赶紧查下代码,发现无解返回 -1 被我写成了 return 0,我是智障吗?赶紧改完重新交吧,怎么 1h 多了还没过 T1,绷不住了。

继续想了半小时 T2,没有结果。1.5h 才收到 97 分的评测结果,很慌,不想继续调 T1 的剩下 3 分了,继续搞 T2。

现在该干啥呢?感觉 T2 的 $1 \log$ 已经没希望了,为了能给造计算机留出宝贵的 3h,还是先写 T2 的 $\mathcal O(n \sqrt n \log n)$ 吧,毕竟预估码长不超过 100 行。分块加个线段树罢了,写完 $\le \sqrt n$ 的先交一发,然后 $> \sqrt n$ 的就是一个 fenwick。工作人员送餐来了,怎么是学校食堂同款小憨包 + 香蕉 + 一瓶牛奶?笑出声。但还不饿,不急着吃。写完 T2 交上去了,没过多久 $\le \sqrt n$ 的那发提交出结果了,41 分一遍写对,这下至少能对拍了。这时大约 12:15 了,基本完成了「刚 3h T3」的目标。

赶紧拿出草稿纸画 T3 吧,Alice 和 Bob 就是人都会,然后 Circuit 基本上把加法器搓出来就行。一边吃着小憨包,一遍列了个 2 次的半加器 HalfAdd、5 次的全加器 FullAdd、80 次的 16 位自然溢出加法器 Add16、判断俩 16 位数是否相等的 Eq16、以及根据 flag 选择两个 16 位数的选择器 Select16(函数名都和 NandGame 一样)。算算发现要 $\mathcal O(nm)$ 次加法,似乎能有 66,那还不赶紧开写?但是 C 风格数组传参是什么鬼啊,用个 vector 或者写个函数让我调用会死吗?这还咋在全局函数中修改答案?搞了半天终于不 Segmentation Fault 了,怎么输出和答案还不一样?这种东西是能调的吗。破案了,原来我所有循环写的都是 for (int i = 0; i < 15; ++i)

写倒也没写多久,顶多 1h 吧,2 点不到测了一组随机数据便交了上去,顺便看了看 T2 的评测结果。怎么还 TM 是 41 分?怎么 RE 了?原来是 fenwick 数组开小了,但是 $8 \times 10^4$ 为什么 TLE 了?

现在手上大概有 $97 + [41, 75] + 66$ 了,感觉不算低。不如先把 T2 的单峰性质给拼上,再多拿到高贵的 7 分。T3 似乎没啥好看的了,那去看看 T1 到底是啥 B 问题。原来 $K$ 应该和 $\log \frac{nc}{\epsilon} \approx 80$ 取 $\min$ 啊,随便改几下就行了,小问题。

接下来的时间,基本就是想想 T2,再想想 T3 了吧。明显 T3 更有意思,然而子任务类型 C 好像根本不会的样子。这玩意不允许有环因此不存在锁存,而且没有时钟信号,好像不是图灵完备的,大概无法做到寻址了吧。看看字符串固定时能不能在 Alice 或 Bob 身上做点手脚?也以失败告终。

比赛结束前最后的 10min,已经准备收拾东西走人了,queue 了 1h 的 T3 总算出结果了,有 66,很好。T2 也测出来了,我差点心肺骤停。53!53!53!他妈的 $\mathcal O(n \sqrt n \log n)$ 过不了 $8 \times 10^4$?我本机卡满了才 0.1s 好不好。那叫一个绝望。

疯狂卡常,疯狂卡常,各种能想到的剪枝优化都加上了,最后 5min 狂交 4 发,最后一发还差点没交上去。然而比赛已经结束了,狂砍 4 发 Waiting。

想骂人,这 APIO 赛制什么鸟玩意,去年还办的挺好的,今年又炸。达子来找我说他 266,碰到的人都说自己不挂分有 266。难道大众分 266?我直接打铁预定。出来大家都在骂。走之前特地记了下 apio2023 解析出来的 IP 地址。

回到房间摆,酒店门口怎么在开相亲大会啊,还拿个喇叭在那儿喊,吵死人了,真想冲出去大喊「你们这群傻逼能不能安静一点啊」。打了半个下午的 mc 才意识到原来今天是 5 月 20 号,怎么我一个人过?怎么 qq 空间里全在秀?有点悲伤。怎么还强迫我听相亲大会?傻逼。

拿自己电脑登录了比赛网址,T1 的最后 3 分没拿到,傻逼。T2 还在 Waiting,有希望,但不多。

再过 1h 继续查分,所幸 T2 有两发 75,这样就是 $97 + 82 + 66 = 245$ 了,很低,但不是很低。

国家队交流会,主持人竟是魏老师,orz。

Day 2

妈的,不想写了,APIO 纯 shaber 比赛。


最后修改于 2025-06-30

Git 版本: 0864e96