CCPC 济南 2024 出题人游记

Imakf

2024-11-01 23:44:59

Life & Travel

Day -???

校内验题,大家前 45min 都在痛苦面具。

Day -??

提前熟悉了一下这个 CCPCOJ,看了一下它的帮助手册,发现有一些很神秘的点,比如 cerr 会返回 RE。

Day -?

赤橙黄绿蓝紫来验题,03:58 AK。大概是一边打,出题组就在一边观摩代码。

B 写了个 10 维 dp,然后赛后 uphack 掉了他们 B 题代码(

钱哥毒奶:

我感觉有榜情况

没人 B 会写 dp 的

J 题写了个 priority_queue,但是由于手速太快并没有耽误 AK。

G 精度爆了一发之后直接 float128 通过。

Day -2

前一段时间 fstqwq 老师在他的电脑上装了一个 CCPCOJ,发现了若干神秘问题,部分已经得到修复

最后因为害怕数据过多造成评测挤兑被喷,削减了数据点的总数。

Day -1

周五晚上坐飞机连夜到了济南。

Day 0

凌晨入住赛场边酒店,由于上午就要打印正式赛题面,就把题面又查了一遍。发现了若干错误。

热身赛题目已经印好,所以这个时候检查出错也没救了,于是就不查了。

干到凌晨 2 点大概终于累到不想修了,也大概没有什么遗漏的地方了,大火就回房休息。

然后早上 8 点成功被外面的广场舞吵醒……发现原本放在枕头边上的手机连着数据线掉地上了,一拔一看发现接头歪了。悲剧。

然后 9 点大家在酒店吃早饭。质量只能说是能吃。

吃完后然后林老师被派去监督打印正式赛题面,剩下逆命跑去赛场坐牢。大概先面见了 SDU 鹿老师,东北大学秦皇岛王老师,CCPCOJ 的开发者郭老师等等。然后研究了一下怎么接入裁判室的内网,连上之后进 OJ 导入了热身赛的题目。交了交各种测试代码帮评测机热身,看起来测得不是很快,有点害怕。然后评测组说只开了 1 台评测机(2 个核),一共有 5 台所以不用太担心。

中午气球组问我们怎么设置颜色,回复:随意。于是气球组就自己安排了 13 个题的颜色,并且马上就就把气球贴在场馆的玻璃上提前一天剧透了。然后遇到了典中典问题,怎么把气球颜色导入到 OJ 里。聪明 fstqwq 曰:“gpt 解千愁。”于是聪明的 gpt 识别出了所有的颜色,并给出了 16 进制 RGB。拜谢!

由于 zjj 十分无聊,甚至要在裁判室掏出炉石,于是被发配到大明湖,他一边游一边往群里发照片直播。然而林老师才是最苦的,每个队伍有 3 份中文题面 1 份英文题面,每一份题面都有 15 张纸……所以从上午 9 点一直等打印到下午 4 点。最后所有题面都运送到林老师的酒店房间里。

在打印店坐麻了

下午热身赛有 5 个简单题,果不其然 30min 的时候出现了评测挤兑,waiting 冲到了第 3 页,大概要 2min 才能出评测结果,感觉尚可接受。老练 fstqwq 言:“热身赛不出问题,正式赛就没有问题。”

翻看评测记录的时候,我发现了若干个神秘的 OLE 提交,突然大家紧张起来,赶紧问了问旁边的郭老师。郭老师回说,他记得 OLE 触发条件应该是当选手输出字节数大于 kx+b 就会触发,其中 x 是标算输出长度。然而这么一听,fstqwq 前辈立刻发现了疑点:那么 spj 题怎么办呢?假如一个构造题,标算输出一行,但是选手输出了 n 行的正确答案,是不是就爆炸了??

大为震撼!

于是我们赶紧先检查了一下 spj 题会不会真的触发这个问题,结论是,不会。陷入了迷茫。

最后郭老师查了源代码发现 OLE 判定其实是这样的:

if (problem.have_spj()) {
    if (ouf.size() > 30MB) {
        return OLE;
    }
} else {
    if (ouf.size() > 2 * ans.size())) {
        return OLE;
    }
}

由于我们所有题目都是 polygon 包直接导出的,所以都自带 checker,正常的输出都不会遇到这个问题。虚惊一场。

ID AC PE WA TLE MLE OLE RE CE Total C C++ Java Python3
A 308 0 444 249 11 6 49 34 1101 3 973 4 121
B 236 0 391 59 0 3 26 5 720 2 717 0 1
C 362 0 116 103 2 7 29 24 643 13 620 0 10
D 279 0 164 29 2 1 12 5 492 0 489 0 3
E 173 0 500 356 3 7 15 9 1063 4 1058 0 1
Total 1358 0 1615 796 18 24 131 77 4019 22 3857 4 136

这是热身赛的数据

热身赛比完,fstqwq 老师被拉去培训如何导入队伍,如何直播外榜等等神秘操作。技术组希望明天由我们自行完成赛前准备。

fstqwq 先辈纠结什么时候传正式赛题目,最后纠结着纠结着决定明天一早过来传题。(flag 确信)

晚上和教练一起吃饭,虽然是同一个酒店,但是不知道高到哪里去了。

然后我感觉巨累,吃完饭集合了一下就马上跑回去睡觉了。10 点就睡着了。

Day 1

早上 5 点就被冻醒了一次,接着睡到 6:40,洗了个头发吃饭就去赛场了。

题传上去之后给每个题测测速,感觉都挺正常的,然后 rejudge 了几个题帮评测机热热身。但是由于 10 个评测进程都开了,所以一下就测完了,感觉非常稳啊。

fstqwq 先生负责比赛倒计时,但是好像大屏幕上的时间没卡准。

比赛开始了。

4min 中山大学4队开出 A 签到,接下来就全都是 A 的提交,其他题目依然沉寂。

接着 13min 终于出现了其它的提交,居然是 PKU 的思路打开送了发 M Wrong Answer???我们一脸震惊。

终于 16 min 的时候福州大学重返未来通过了 J,榜单终于回归正常了。

接着 BF 被过,意料之中。

但是 D 被 THU 清一色 26min AC 还是有点吓人。

眼看着榜单开始百花齐放,我们知道比赛终于好起来了。

接下来的时间,就是看看 PKU 和 THU 的争霸,看看是谁又在看错题前期交后期题,看看是谁忘记输出行数,看看大家如何争夺榜单前列。

4:00 的时候我把所有当前提交数据拉出来做讲题的统计数据……

统计完,4:10 的时候,我突然发现榜上 G 有一发提交,点进去是个 RE,并且是挂样例,但代码完全就是正常的计算几何。我顿感不妙,想起了久远的记忆

提前熟悉了一下这个 CCPCOJ,看了一下它的帮助手册,发现有一些很神秘的点,比如 cerr 会返回 RE。

不会……吧?我复制他们的代码,注释掉所有 cerr 后台交了一发。

AC!

我吐了一口老血,叫来 fstqwq 主裁判观看。首先向郭老师确认这个特性是否还存在,得到了肯定答复后,冷静的 fstqwq 大人说,还是发全体通知吧。我颤颤巍巍地输入通知,生怕发错,最后 fstqwq 先生说:记得中英双语。于是又把中文拿去 gpt 翻了个英文。发送出去,过了一会,场上传来一声惊叫,我刷新一看,过了……幸好,一血还是他们的;幸好,就算他们第一发提交过了也不会影响排名。

我倒!千算万算,把这个特性忘了!本来想的是在热身赛告诉选手这个 OJ 一些可能影响评测的特性,最后还是缺漏了。

惊心动魄的环节结束,最后 15 分钟,我们又开始担心评测起来。结果是,就算到最后的时刻,评测机依然轻松运行。

ID AC PE WA TLE MLE OLE RE CE Total C C++ Java Python3
A 326 0 82 0 0 0 7 10 425 10 412 0 3
B 276 0 472 38 0 1 15 24 826 16 807 0 3
C 30 0 57 4 0 0 13 1 105 0 99 0 6
D 34 0 126 41 0 0 8 5 214 3 211 0 0
E 48 0 377 4 0 0 19 31 479 4 72 0 403
F 194 0 264 7 0 0 11 7 483 5 478 0 0
G 2 0 1 2 0 0 3 2 10 1 8 0 1
H 41 0 17 8 0 0 1 2 69 0 67 0 2
I 154 0 344 63 0 0 24 16 601 3 596 0 2
J 320 0 160 157 1 0 24 8 670 5 664 0 1
K 0 0 3 0 0 1 1 1 6 0 5 0 1
L 4 0 54 6 2 1 1 0 68 0 67 0 1
M 0 0 117 0 0 1 1 5 124 3 121 0 0
Total 1429 0 2074 330 3 4 128 112 4080 50 3607 0 423

这是正式赛数据

其实比到一半,鹿老师突然跑过来问我们现在已经过了几个题,我们看看榜说 9 个,然后鹿老师说这次他们只准备了 11 个一血奖牌,所以万一不够就尴尬了。万幸最后恰被过了 11 个题。

然后是讲题环节

isaunoya 说你普通话好标准

你是不是在故意隐藏自己的口音啊

怎么没有长沙味道了

好像就没有我什么事情了。

晚上马上坐飞机回上海,一切就这么突然地结束了。

Day !

坐在寝室,在知乎上看看自己的风评。不过好像也没有什么人在意。