SNCPC2024陕西省赛游记

今天是2024年6月2日,下午四点半省赛结束,在1300滚完榜后和队友到李家村万达吃了晚饭,就坐地铁五号线回了创新港,到宿舍已经是晚上22点04分了。赛前宇舜说今天要保铜争银,我说别毒奶,有铜牌就不错了。但最后真就差点银牌,甚至7题的头部队伍已经到了金牌区。所以四舍五入我们也是金牌(bushi)。
赛前
撺掇队友报名
2024年4月15日晚21点07分,我正快乐地在王者峡谷里遨游,突然 QQ 弹出了一条消息,我点开一看是西交 acm 交流群发布了 2024陕西省赛的报名通知。上学期刚好和室友们参加了西交的软件开发校赛,写了一个基于 unity2D 的垃圾分类小游戏,其实本质就是一个推箱子,我和宇舜还有旭贸一起负责游戏总体的程序设计以及开发。虽然最后只拿了校三等奖,但是在开发过程中我们对彼此的编程实力都有了一定了解,因此我们决定一起参加这次的 ICPC 陕西省赛。
报名的时候要填队名,我键盘一动就把宿舍群的群名敲了上去——403 Forbbiden。403是我们宿舍的门牌号,当时建群的时候隔壁404宿舍取了个很好听的名字叫 404 not found,宇舜说那我们就叫 403 Forbbiden 吧,对仗工整而且具有专业特色,于是就有了我们的宿舍群名,我决定沿用一下这个名字作为队名,让宿舍的名号在 ICPC 的赛场上发扬光大!
校赛摸鱼
同时我们发现在省赛前半个月,西交会举办一次校赛。由于我们三个都是第一次以组队的形式参加 ICPC 的比赛,我们决定充分利用校赛的机会练一练配合,感受一下赛场的氛围,并通过校赛的复盘为省赛调整策略。
带着这样的目的,5月19日早上10点我们从创新港坐5号线来到了兴庆校区。在两位”交本佬“的带领下,我在兴庆的食堂吃了一顿不错的午饭,然后我们一人拎着一瓶脉动就前往了比赛场地。
校赛的题目还是比较简单的,宇舜上来就把A题秒了,然后旭贸接着就把C题秒了。而我突然犯起傻逼被B题卡了十分钟,最后简单写了一下思路就把草稿纸丢给了宇舜让他接着写,然后我就和旭贸一起去开D题了。还没看一会宇舜就把B题秒了,然后就去开E题了,他真强。
D题的题意大概是构造一棵符合一定条件的树。我想了想觉得这题不需要建树,直接建一条链,从小到大对结点排个序,如果不满足题意就把链反过来,原序链和反序链必有一个是符合题意的。我和旭贸讨论了一下觉得没问题,直接交上去就过了,感觉非常爽。
然后我和宇舜就从不同的角度研究E题,他把题目抽象成了一个一笔画问题,但是有一个不知道怎么解决的问题,而我想从DP的角度把这题弄出来。这个时候旭贸已经在写F题了,他自信满满地交了程序,背着队友偷偷TLE了一发,然后他又优化了一下程序,第二次交上去就过了。宇舜发现旭贸把F过了,就拉他过去当小黄鸭,给他讲他的一笔画问题,旭贸灵机一动解决了宇舜不知道怎么解决的问题,然后拿起键盘一通狂敲,就把E给过了,他也好强。
过完E之后,我发现J好像是背包题就去开J了。旭贸去开了I题的大模拟,宇舜开K题。
但是我发现J题背包复杂度好像过不去,看了看榜单没几个过的,就放弃了,想着看看宇舜的K题,但是也没啥头绪。旭贸对着电脑一顿输出,开始写bug,调试了很久。这时已经封榜了,我看着题感觉没有会的了,就开始一边摸鱼一边给旭贸加油希望他能把I模拟出来。
这时宇舜突然跟我说,他把K题抽象成了一个矩阵快速幂问题,但是他不会矩阵快速幂。我听了一下他的思路感觉没问题,就拿出了之前果果给打的板子现场学矩阵快速幂。我们学完了以后,旭贸已经卡I题一小时了,~~不许再敲了!~~于是我们俩抢过旭贸的键盘开始敲K题,然后就把K题过了。
然后旭贸就继续他的模拟之路……赶在比赛结束前交了一发I,但是还是wa了。


最后我们7题喜提校赛银牌。
校赛复盘
虽然校赛的成绩还不错,但是我们还是发现了很多问题。
跟榜不坚定
虽然我们在校赛的过程中大部分是在跟榜走的,但是不够坚定。比如榜上没有几个队过J题但我还是去开J题,然后把自己心态开崩了。以及O题榜上过了一大堆,但是我们觉得是数学题要用素数筛超出了我们的能力范围放弃了,但是它其实就是一个输入n输出n平方的找规律题。
钻牛角尖
一道题做了半小时没头绪就应该和队友讨论一下,或者果断换题,因为这种时候大多是陷入思维误区而死循环,陷入其中除了浪费时间没有别的意义。比如我想了一小时的E,以及半小时的J,还有旭贸写了一个小时的I。
合理分工
虽然赛前分配宇舜做主编程手,但是校赛的时候基本上是谁有思路就上机写代码的。有时候没想清楚就抢键盘了,经常出现思路不清晰卡住的情况。所以我们讨论后决定应该先让宇舜自己开签到题,我们俩先在纸上手写清晰的伪代码后再上机实现。
赛中
报到
2024年6月2日早上8点15分我们就起床,洗漱之后9点从南区宿舍出发,10点就到了兴庆校区。

因为比较远,所以我们有计划地错过了热身赛以及开幕式,到1300签到后我们领取了参赛证、ICPC省赛纪念衫还有一个罗小黑的钥匙串就去吃饭了。

省赛过程
11点30分比赛开始,宇舜开A题,我开B题,旭贸开C题。宇舜发现A是个模拟的签到题,很快就把A过了,然后继续往后找签到题。B题是求一个只有数字1、加号、乘号的表达式矩阵,要求矩阵的值最小,我想着找规律但是觉得很奇怪找不出来。宇舜简单看了一下B也没啥思路,就去开F了,F题最后简化的结论就是输出序列最大值,比较简单,但是他背着队友偷偷wa了一发。
我想B题想了半小时没思路,发现榜上做出了B的队伍也不多,于是就跟榜去开G题。这时宇舜发现M题也是签到题,就直接背着我们把M给偷偷过了,点名表扬!这时旭贸给出了C题的一个做法,但是宇舜给他举了个反例。G题我想到用容斥定理,先预处理出一些可能用到的值,然后再根据实际情况求值,但是实现的时候脑子浆糊了,就把宇舜叫过来当小黄鸭。跟宇舜讨论后,我们造了一些数据修了一下程序,就把G给过了。最后滚榜讲题的时候说这题是看成九进制转十进制,不过当时没想到,过了就行。
这时旭贸已经卡C题一个多小时了,但是榜上过C的队伍还比较多,于是我就跟他一起继续研究C。宇舜发现榜上L题过的人太多了觉得不太正常,就去开L了。C题我看了一下,想到用并查集来做,我觉得只要对并查集做简单的修改就可以过,实现了以后交上去发现wa了。这时旭贸也给我举了一个反例,我发现我把树简单地考虑成链了,于是在原有程序的基础上加了一个树的构建然后树形dp了一下,过了旭贸的反例,交上去就把C题过了。
在这之后没多久就封榜了,我们位于铜尾。
这时宇舜表示L题的数据是10的18次方,询问次数是10的5次方,根据校赛O题失败的经验这题应该是打表找规律的题,但是他打了3到7的表没找到规律。但是L题过的队伍实在太多了,所以我和旭贸决定继续看L,宇舜去看B题了。旭贸说,会不会所有数的答案就在2和3里面,因为感觉这个答案会比较小,我觉得他说的有道理,但是宇舜打的表中6的答案是4,我检验了一下发现确实是4,所以否掉了这个结论。我看了看宇舜打的表,
输入n | 3 | 4 | 5 | 6 | 7 | 9 | 10 |
---|---|---|---|---|---|---|---|
结果k | 2 | 3 | 2 | 4 | 2 | 2 | 3 |
其中9和10的输出是题目样例给的。我看着这些数字发呆,觉得结果中的4非常突兀,突然灵光一闪,难道结果k就是不能被n整除的最小数!我越想越觉得有道理,就把这个结论和队友分享了一下,宇舜想也没想选择相信我的直觉,直接丢下B题开始准备打质数表。我用输入8尝试了一下,发现结果是3,刚好也符合我找到的规律,我和旭贸觉得我猜出来的结论非常靠谱。我又一想,直接从2遍历到n-1找最小非因子就行了,不需要打质数表,因为觉得非因子的分布不会太大,时间复杂度是可以的,所以就直接制止了宇舜打质数表的行为,直接往上一交,居然过了!!!队友对我精准的直觉感到诧异,我也觉得很神奇。
这时距离比赛结束还有一个小时,因为B题的数据很小,宇舜就打算继续用暴力搜索的方式把B题做出来,他想调用c++的一个叫的eval的我没见过的函数直接对表达式字符串求值,但是没过编译,我怀疑这个神奇的函数是否存在。我一想,最后一小时也做不了别的题了,就拉着旭贸开始打表,一共就49个矩阵,转置一下只要25个矩阵,我觉得不如直接面向答案编程,先把答案打表打出来直接调就行了。宇舜觉得很有道理,于是他就开始写打表框架,我和旭贸就开始人脑算答案,互相对了一下觉得没问题,就填进宇舜的框架里。第一发wa了,宇舜精准地发现有一个矩阵写错了,我们改了一下,第二次在比赛结束前五分钟交了上去,把B题给过了。


赛后发现很多队伍B题都是打表过的,甚至打代码的时候把打印机都搞红温了。

省赛颁奖
打完省赛后我们回到签到的1300开始滚榜,中间有一段时间我甚至感觉银牌有望,但是对手们都太强了,我们还是只拿了个铜首。不过还是比较满意的,因为封榜前是铜尾,一不小心就打铁了,最后有铜就很满意了。不过7题的队伍最高达到金牌区,虽然同样7题的我们只拿到了铜牌,但我自信地感觉我们有金牌的实力。
赛后感想
从2019年的国庆假期在果果的引领下第一次接触洛谷,然后打西电的acm新生赛拿到了二等奖,我开始慢慢接触程序设计竞赛这个之前从未想过的领域。然后慢慢的是校赛、csp、cccc天梯赛……其实大二的时候有同学找我组队打省赛,但是当时因为一些原因没有答应他们,于是他们找了另一个同学,最后他们省赛打铁了。后来其实有一些后悔,没有在大一的时候努力一点进校队,没有参加省赛感受那个赛场的氛围……大四毕业后我本来以为自己不会再有机会了,但是幸好这次圆梦了,甚至拿了一块铜牌,算是留下了一点痕迹证明我也为之奋斗过吧。
我还记得第一次听线下的acm宣讲,当时那个学长在讲台上说了一段话至今印象深刻,他说:
有些事情已经过去了,就不要后悔,不要惋惜。话虽然很老套,但事实的确如此,能把握的只有当下与未来。或许你看到身边很多大佬在高中甚至初中就已经学会了很多很多,感觉自己永远都无法跟上他们的脚步。或许你在后悔你过去的一些决策,这也没有办法,毕竟人生不像动态规划有最优子结构。如果你喜欢ACM这个竞赛,就请坚持下去,不要在意自己的基础,这不是决定的因素。一颗热爱这个竞赛的心,与在追逐梦想上付出的汗水,才是一路走来最为珍贵的东西。