ICPC2023 EC Final (ICPC亚洲区决赛) 比赛报告

ICPC2023 EC Final (ICPC亚洲区决赛) 比赛报告_第1张图片

一、比赛情况和比赛成绩

d3b0f2922e9d4c5aabc16ad2b9d4776c.png

 The 2023 ICPC Asia East Continent Final Contest | Board - XCPCIO

  1. 正式赛日期:2024-01-13 周六;地点:上海大学(宝山校区)
  2. 奖项:银牌
  3. 通过题数:6
  4. 排名/总队伍数:66/280

二、赛前准备

队伍加训

背景:这次大二上期末第四作战阶段与校队寒假训练,即我们 EC Final 前加训产生了几天的重合。对此,我只能说,然而队伍加训以恢复状态和增进合作是显然必要的。2024-01-07结束了一门专业课工作;2024-01-10下午16:00多,终于没按时交了课程 “集合与图论” 的期末论文。

本场比赛前,与队友依次模拟训练了以下比赛,且每次训练均做满完整的5小时。考虑到应针对本次比赛的风格、难度(包括出题人),决定训练几场往年真题。队友很给力,早就找到了可 VP 的 EC Final 题源。

时间 模拟训练的比赛
01-06周六晚上 EC Final 2022
01-08周一下午 EC Final 2021
01-09周二下午 EC Final 2020
01-10周三晚上 EC Final 2019
01-11周四下午 某 HW 营比赛
个人练习

由于队伍加训之外的可用时间并不太多,因此自身没额外做太多的题目。当然,毕竟较复杂模板的题目不太可能出到,因此活跃思维和恢复手感更为重要。

主要就是:对于训练中未过的部分题目理解一下题解,周四到周五稍微补了一下周四的题目,且周五简单过了一下自己的模板等等。

三、热身赛

主要借热身赛的环境、测试平台,和队友共同进行了以下测试与准备等:

  1. 检查 VSCode 环境,包括调试功能
  2. 查看比赛环境默认栈空间大小
  3. 确认编译错误不罚时
  4. 测试 map / unordered_map 的速度
  5. 借较复杂的字符串模板,熟练对拍写法,同时熟悉键盘
  6. 测试打印及收到所需时间

至于热身赛的题目,共四题:A题似乎为打开手机搜索题;B、C题应均为往年 EC Final 原题,其中 C 题为前一周所做去年 EC Final 2022 的交互题;D题单纯考 “快速模” 模板,借这题我们补了这个实际上正式赛并没有涉及的技术。

四、正式赛

【前期】
  • 开场后,我先准备编辑器、从评测平台下载部分题目的样例等等
  • 随后听zzy讲M题,然后感觉应该不是签到题,此时榜上尚无人交
  • 过了一会B题有人过了,于是我立即去看B题并听lym讲。首先看出来从前往后贪心不对(因为样例都不对),随后lym提出来应该从从后向前贪心。然后lym直接开始写,同时我证明出了在此题条件下从后向前贪心的正确性,然后额外凑了个小样例,此时lym写好了,我看懂而测试也没问题后直接一发 AC 
  • 此时根据榜应该是做E题,zzy应该已经看了一会,我听zzy讲E,而lym去看K题
  • 过了一会zzy和我讨论出了E题的一个想法,样例对此均符合,并且也大致想好怎么写了。于是zzy开始写,同时我通过一些例子证明了这个做法应该是对的,然而写完交上去 WA
  • 然后zzy接着思考E,而我听lym比较详细地讲他K题已经比较成熟的想法。随后zzy跟我讲了E一个情况的解决办法,并且进一步地证明了之前那个想法的正确性,并改好了代码,我们一起确认后交了,然后 AC
【中期】
  • 随后关于K题我又向lym确认了一下,然后lym开始写
  • 我听zzy讲了F题的题意,然后稍微想了一会,做了一些可能暂时没什么用的分析,中间可能又听zzy讲了L题题意
  • 然后lym写好了,好像是先 WA 了一发,然后lym认为有 0 缺失造成的匹配问题,当然我也暂时没细想疯狂补 0 是否有问题,于是可惜又 WA 了。随后lym发现疯狂补 0 是显然可能出错的,于是我们就还是用 0 补到位数相同,确认了这样的正确性,且应该又看了一下代码,结果又 WA
  • 此时zzy F题应该又想了一些,不过可能还没完全做出来,此时榜的情况是F题过得比K题明显要多。所以显然此时情况比较尴尬,事实上可以用 “生死时刻” 来形容
  • 此时我提出lym再对打印纸检查一下代码,然后和zzy讨论一下F,同时我快速写一下K题的对拍。这是因为,K题对拍应该能拍出来,而我觉得尽管lym当然也可以写对拍,但不如还是这题思考程度更大的他再看一下代码(我也看过了),且lym想一下F题也挺适合,另外我已经想好暴力怎么写了,并且前一天刚写过对拍
  • 于是我开始写K题的暴力与对拍(过一会听到队友讨论F好像有较多的进展)。写好开拍后,大概拍了将近一万组拍出一个较小的错误数据,然后lym立即去分析,随后zzy先写了一点F题。过一会lym找到错了,立即改了,不过我去上了一波厕所
  • 回来之后,lym已经改好了,并且又拍了至少 5000 组没拍出错,但是交上去又 WA
  • 我感觉有可能是造的数据太小(因为暴力只能写类似 $O(n(n!)^2)$ 级别的)而拍不出错,于是试着变化和加强一下数据继续对拍,但结果就是加起来拍了可能一千多万组都没拍出错
  • 不过,中间zzy “穿插” 着写F题,最后 AC
  • 然后lym和我接着调K,结果很快发现前面交的那一发 “仍然错的” K里面保留着我对拍写的 freopen文件,将其注释掉以后直接 AC 了(好在发现了,并且从结果来说没带来较大影响)。至此,我们成功度过了这波 “生死时刻”
  • 然后zzy和lym一起讨论L题,我去看别的题目,最后我决定细看J这个基于图论的交互题。这是因为榜上J是剩余题中过得最多的,而且我感觉这题既询问次数约束比较松,又似乎思考上比较直接,不像更常见的有很多思维或小 trick 的交互题
  • 然后zzy应该和lym讨论出了L题,并且好像快速 “一起写” 完了,交上去一发 AC
【后期】
  • 此时还有将近两个小时,我先和队友讲了J题题意。而我们目标已经非常明确了,就是三人完全 all in 此题就完事了
  • 在一些初步讨论取得初步共识后,我提出先分析如果是一棵树应该怎么搞。一会儿讨论出来了,并且我也借此分析了题目 (2n+2m) 的询问次数的约束
  • 随后便开始想一般图的情形,又经一些分析后我们讨论出了应该怎么做。此时可能还有大约 90 分钟,就差写出这题了
  • zzy开始写,当然完全可以说三个人在 “一起写” 这个题。三人思维基本同步,并多在一些细节的地方直接进行讨论,由此基本保证了有一定处理的本题不会写乱或卡住
  • 写完后,又一起基于样例等调试了一波,交上去 WA 了一发,但此时时间还算多
  • 后面当然是继续一起 all in 调试。在zzy发现一个明显做错的数据后,我们立即对其开展调试与分析,最后发现漏了一小句话
  • 改完后,AC 了。此时距离结束应该还有十多分钟。

五、比赛总结

本场比赛,从主观应对上来看,首先自然是策略上应该没有错误,其次其最大特征可谓是 “通力合作”——所有题目都是至少两人一起想的或都清楚,包括共同调试乃至 “一起写” 的。这既提高了思考效率,也在很大程度上避免了算法假掉而浪费更多时间,如此解决了一定的困难。

从赛时我们队的做题进程来看,很关键的是我们成功度过了中间的 “生死时刻”,随后较快地做出了另外一题,从而尽快开启了三人合攻 “最后一题” 的新局面。虽有过往三人不克一题之经历,然以其换此时之通透亦甚为情愿。

六、后续

  • 华为之夜

ICPC2023 EC Final (ICPC亚洲区决赛) 比赛报告_第2张图片

  • 相关讨论

如何评价2023ICPC EC-final?icon-default.png?t=N7T8https://www.zhihu.com/question/634199857/answer/3356337905

你可能感兴趣的:(ACM,算法,c++,数据结构,贪心算法,程序人生)