ICPC2023济南站 游记

ICPC 2023 Asia Regional - Jinan

备赛

至早可以从入队讲起吧。

忆往昔

入队后本人一直“守本分”,几乎全勤训练赛,鲜有迟到早退。
大一上是老老实实参与个人赛,寒假训练也是如此;可以说代码能力的提升来自这段时间。
大一下跟随“春季集训”学习,深入探讨“计算几何”和“字符串”等,不时参与Codeforces Rounds。
此后暑假训练全勤+全报告。可惜网络预选赛暴露了一些缺陷,最终没有取得很多参赛名额。

本赛季

选择赛站时,考虑到我们只有1个名额,为了尽量增加训练次数,便选择了时间较为靠后的济南站。没想到后面还有杭州站

此后就是按鹏鹏的计划组队训练和个人训练,有时鹏鹏选的题目稍高深,便当场决断换一套题。加训并不多。

个人情况则是本学期课表有过多的课,其中还有2门荣誉课,课业压力过大。加之生活上的一些问题,并没能在这边展现十足的激情:
Codeforces即时赛只参与了一两场,做套题时遇到的尚未掌握的知识也是交给队友。在这里向二位队友谢罪。

赛前一周

加训了两场。由于大家课业都挺繁重,时间需要调节乃至硬挤(如翘课)。
五个小时确实能凑出来,但是其前后都是事情;而且弄得很累,第二天课业也不太好进行。
这是我(如上所述,生活上有些问题)的个人感受。二度谢罪。感谢队友们的理解和包容。

两场的情况可由队长来细说。我认为赛前打这两场主要目的在于保温,即熟悉手感、规避常犯的错误等。

赴赛

没有坐飞机而是乘了高铁。到酒店放下行李后即吃晚饭,然后例行的蜜雪冰城之后回房间休息。
我与带队的qlc同房间,洗澡后便躺床上酝酿睡觉。22:41收到了队友农的邀请,23:02看到邀请回复“不农 😴困了”。
S属性大爆发!睡觉00:24

8:30被阳光刺醒,报道之后在食堂 因不熟悉补贴流程而 爆金币,之后回酒店等电梯等麻了……
又休整2h,期间看了看bitset,之后去热身赛。

热身赛

并没有发水

赛前桌上有一张注意事项,关键信息包括DOMjudge的各种verdict(不含Presentation Error, Memory Limit Exceeded)。
下发的试题袋含2份中文题面和1份英文题面,以及1张白纸。下发了3支黑色“巨能写”。

我率先上机。第一个难题是如何打开IDE。三弄两弄之后立马放弃与linux GUI搏斗,转而打开bash写下code启动了VSCode。
赛场所用一体机品牌为AOC,未找到调节亮度和对比度的键,更别提能在linux GUI内找到这样的设置。灵机一动把VSCode颜色主题改为Light+即好看很多。
VSCode已经配置了java、python的语言支持插件和code runner,且后者的run in terminal选项已经打开。
推测应该就是上一站安徽站用的电脑直接送过来的。但是键盘很难用,RT两个件软趴趴按下没反应,需要暴力敲击键盘。

向map内顺序插入2e6个数,本地和OJ都不会TLE。本地甚至能做得更快。估算评测机速度为本地的0.8倍以上。

热身赛有2道签到题,1道须稍动脑,还有1道不好评价的题。
不过这最后一题帮助学习了submit脚本的使用,帮了大忙!
写了这样的码来过最后一题:

#include <cstdio>
#include <cstdlib>
char str[] = "#include<cstdio>\nint main(){puts(\"ABCD%c%cGH\");}";
char sel[] = "EFIJKLMNOP";
char a[100];
bool vis[100];
void dfs(int i){
    if(i == 3){
        FILE* fp = fopen("D.cpp", "w");
        fprintf(fp, str, a[1], a[2]);
        fclose(fp);
        system("submit D.cpp\ny");
    }
    for (int j = 0; j < sizeof sel - 1; ++j){
        vis[j] = 1, a[i] = sel[j],
        dfs(i + 1),
        vis[j] = 0;
}
int main(){
    dfs(1);
}

用dfs是因为我们同时在盒,所以需要枚举的人数未定。
没写sizeof后面的-1导致本地段错误了一次

随后我们将看到热身赛上被迫掌握了submit的用法有多么重要。

当晚睡得更早,吃完饭洗漱后就开始酝酿睡觉 ,乃至不惜充钱看漫画,23:17入眠。

正赛

早饭后直接去赛场。队长证件塞手机里闹了点小乌龙,一切办妥后离开赛还有9min。可能确实导致稍有紧张。
开赛之后我立刻启动VSCode并更改颜色主题,打开Domjudge,并打开Clion以备调试。
此后简略地敲了一点板子就开始仓促看签到题。
未能考虑到全部情况导致签到题吃了一发罚时。

浏览器内编辑文档导致一小段丢失,现重写:

赛时具体情况可见“蜜群”讨论(五百多条,哈人)。详不列出。自觉开题顺序没什么毛病。
码风码力等导致的长时调试(本地运行时段错误)、不过样例、莫名TLE 造成了时间的浪费,也产生了大量的罚时。

end 丢失段

我负责的M是两发过,第一发是$$n^2 \log n \times C$$,其中C表示atan2函数带来的运行开销;TLE之后提前算好极角再排序,变为$$n^2(C+\log n)$$,便可以通过。

说到底不熟练。sort的cmp内部不应定义临时变量乃至进行计算,而应该是关键字比较的形式。要比较的关键字应当在sort之前计算好。

此后就是给队伍打打杂。赢奖全靠二位。

比赛结束后仍有2个可过但未过的题,思路与标算相近;可惜没能调出G,网络流二分图匹配那道更是碰都没碰。

万幸的是银牌守住了,且就算那两个题都过了仍是银牌。
得知这个消息是在归程的出租车上,由热身赛后刚刚结识的齐鲁工业大学的学弟通知。

归程就是吃饭、做作业、看漫画,然后去逸夫楼卸下书本和赛站下发的物资,然后回寝室交作业睡觉。
今天(2023年12月4日20:25:25)已然正常上课了。

感想

(不分先后)

  • 书到用时方恨少。没带“template by WoodCube”,导致当场积分$$ \int \sqrt{x2+a2} \space \mathrm{d}x$$,浪费时间了捏。所幸那题目直接弃了。
  • 好好休息。别在场上犯晕犯困。
  • 熟识赛方所提供的全部设施。本次三人提交全是使用submit脚本,对节省时间和降低罚时大有帮助。
  • 提前熟悉赛场提供的OS、OJ和IDE。看得出来其他2位队员不是很用得惯CLion的调试(队长甚至平日就不怎么调试)。
  • 赛场上可能会无法打印等等。选手们不仅要写健壮的代码,自己也要足够健壮以应对各种可能的突发状况。
  • 在赛场上结识一个志愿者或者技术组,有事好说话,消息也灵通

Edition 1. completed at 12/4/2023 20:45:01.

posted @ 2023-12-04 20:46  全球通u1  阅读(201)  评论(0编辑  收藏  举报