EC Final 2024 游记

· · 生活·游记

Day -1

到达西安。入住酒店的时候已经八点多。

和 lnw143 一起外出吃饭,发现附近只有一间饭店开。刚好教练要去那里交朋友,于是一起蹭教练一餐晚饭。

Day 0

挺早睡的。

早上看兵马俑。十点左右才到,参观完已经一点多。吃完午餐直接去试机。

试机。

首先映入眼帘的便是 b.cpp,ZnPdCo 仔细观察,发现这并不是 B 题的标程,而是 C 题的标程。于是把它复制到桌面。

接着观察到 A 题是大水题,lnw143 很快写完了。

可以交题了。迅速提交 C 题,居然通过了。

居然在不知道题目要求什么的情况下通过了一道题。

看着一个深绿色的方块,突然意识到,甚至是首杀。

然后把 A 题也交了。

志愿者送来了两个气球,一种有一个特别一点,原来首杀的气球是特殊的。

第一次抢到全场首杀,真是令人十分愉悦。

看 D 题,观察到这是 NTT 板题。

令人悲伤的是,由于没有携带纸质资料,忘记了超大 NTT 模数。

于是用 CRT 把模 998244353 的答案和模 167772161 的答案合并。

但是 WA 了。快到试机结束才发现,998244353\times 167772161\le 10^{18}

被两个月前没有背诵下来的 NTT 模数背刺了。

“必考,背诵”

$1945555039024054273=27\times 2^{56}+1,g=5\\4179340454199820289=29\times 2^{57}+1,g=3$。 $27\times 2^{56}+1,29\times 2^{57}+1\\27\times 2^{56}+1,29\times 2^{57}+1\\27\times 2^{56}+1,29\times 2^{57}+1$。 多项式的题没有做出来,这是我的过错。是我没有背诵 NTT 模数,导致没能切掉这一题。今后,我会牢记 $27\times 2^{56}+1,29\times 2^{57}+1$ 以及 $5\times 2^{25}+1=167772161,7\times 2^{26}+1=469762049$ 这些常用 NTT 模数。 切两题遗憾立场。 晚上要收手机,所以挺早睡的。 ## Day 1 被带飞了。 早上睡到八点,因为九点才发车,所以一点也不急。 十点开始比赛。 比赛刚开始的那段时间里,什么题目都没有做出。 过了二三十分钟后,ZnPdCo 会 A 了,贪心。 只见他的手指在键盘上翩翩起舞,一段段优美的代码就像一首悠扬的音乐一样流了出来。但其他两个人没有心思、也没有时间去欣赏这么优美的代码,都在低头思考题目。 F 是真值表,有点头绪。 ZnPdCo 过 A 了。这个令人激动的消息在很短的时间内就透过显示着评测信息的大屏幕传遍了大街小巷,令所有人都为之震撼,为他激动。 大概一个小时的时候,lnw143 会 I 了,调整。 他坐在电脑前,屏幕的蓝光映照在他的脸上,手指在键盘上飞快地敲击着。每一次敲击都像是一个音符,组成了一首复杂而有序的代码交响曲。他的眼神专注,眉头微微皱起,仿佛在解开一个复杂的谜题。偶尔,他会停下来,思考片刻,然后继续在代码的世界里遨游。每一行代码的完成,都让他露出一丝满意的微笑,仿佛看到了自己努力的成果在屏幕上逐渐成形。 I 过了。此时,队伍终于有两题通过了,不再是垫底。 F 会了。每次消掉一维。开始打。 笨拙的手指犹豫地敲击着键盘,花了十几分钟才把一段简短的代码完成。 交上去,被标记为不接受。 打印代码,ZnPdCo 开打 E。 抑衍仃贞,鉴定为少打了一个右括号。罚时 +1。 修正了以后,还是有问题。这令人百思不得其解。明明手玩样例都是对的,为什么是错的? 在思考当中,E 题通过了。这真是令人高兴的事情,终于通过了三题了。 顶着巨大的压力去思考 F 为什么错了。lnw143 和 ZnPdCo 一起打对拍程序,用 Python 打。一个小时过后,终于把对拍程序调试出来了。 但是没问题。答案是对的。 此时观察到,操作次数算错了。这个消息如同天塌下来一样令人绝望。 但是 lnw143 和 ZnPdCo 并没有放弃,而是在原有的代码上添加各种玄学的优化,通过 F 题的决心使得他们不肯放弃。操作数显然大大减少了,但是还是不能通过。 期间和 lnw143 分享了一点 L 题的想法。猜测 $\sum \text{mex}$ 是 $O(n)$ 级别的,因此只需要支持区间赋值,区间加,以及求区间有没有一个数存在即可。 马上想到分块,但是由于 $n\le 5\times 10^{5}$,虽然开了 $8$s,仍然以为不能通过。 最后只剩一个小时了,G 题过了一车人,lnw143 说这是打表题。 才开始观察 G 题的表。坐在电脑前看了五分钟发现了规律,然后打了一段代码,WA 了。 lnw143 慧眼识珠,马上发现了原来用 exgcd 求逆元求错了。他把原来的代码略加修改,运用刚刚发现的结论,终于通过了这道题。 此时此刻,整个队伍都在冲 F。 可惜的是,到了最后一刻,还是没有打出来。四题遗憾离场。 出来问 CYT,发现原来 F 题的想法是对的,只不过要加一点简单的优化。 UTG 把块长开小 $\frac 1 {10}$,以 $O(n\sqrt n)$ 的复杂度通过了。 很难受,明明本来可以五题甚至六题,但是只有四题。 为什么?我觉得这是我的问题。首先 F 题的代码不能通过,此时没有第一时间发现操作数不对,而是等了好久,等到把对拍程序写完才发现不对劲。发现错误了以后,没有调整思路,BFS 式想题,而是对着原来的错误代码东改改西改改。其次是实力不够,做题量过少,没有充足的勇气。L 题其实很好写,但是因为没有做过几道分块的题目,导致以为 $n\le 5\times 10^{5}$ 开 $8$s 过不去,想到了正解没有去打。 如何调整?首先程序错误了以后,如果确定代码打得没有问题,应当首先想想是不是方法错了。如果关键地方错了,不要在原有的思路和代码上考虑修改,而是要另辟蹊径,重头再来。其次要增加做题量,各种方面的题目都要涉及,以便增长经验和见识,不至于连“$5\times 10^5$ 单根 $8$s”都认为过不了。最后是比赛心态的调整,在做线上赛,特别是可以看榜的比赛,不要老是盯着排行榜上看,这样子会使得心情很烦躁。在过题了以后,以及每个半小时以后才去看榜,不要被看排行榜这一行为干扰,也不要被别人的节奏带跑。 ## Day 2 挺早睡的。早上七点钟出发去机场,十点的飞机,下午一两点回家,简单收拾一下就回校打 AGC。