电子科技大学第二十二届ACM程序设计竞赛 决赛游记
Preface
利益相关:UESTC_十斤鸭梨
转眼间一年时间又过去了,又到了西南地区最高水准(存疑)的UESTC校赛时间了
由于有了去年的经验,再加上今年和队友算是磨合了许久,也经过了很多现场赛的洗礼
虽然我前中期屡次犯病(说我是个人都有点拟人了),但好在最后2min极限一发过B拿下顽强拼搏奖的同时反超到了正式队Rank2
虽然最后还是被银牌爷单挑打出\(n+2\)了,但乐观来看去年合肥被打了\(n+3\),这何尝不是一种进步,赢!
游记
明明前两天训练的时候都能一觉睡到11点精力充沛的,结果今天9点不到就醒了然后怎么也睡不着
辗转反侧后遂起床玩了会C+C,等到时间差不多了就去食堂吃了个饭然后滚去基础实验大楼了
签到完领了衣服后才想起板子啥的都还在232,遂滚去在垃圾堆里一通翻找才堪堪找齐板子
(PS:徐神的Poly板子第一页掉下来夹在大物实验报告里了,真是让人好找)
顺便搞了几支CCPC Final的特供笔供赛时使用,有一说一这笔写起来还挺丝滑的
找到位置后发现一只落单的雷大爷,被告知包大爷兴许不来了,要被残阵如名吊打了.jpg(后面还是踩点来了)
后面时间差不多了徐神和祁神也悉数赶来,然后开始研究比赛用什么IDE
刚开始下载软件包的ftp好像出了点不明问题,下载下来的安装包都是坏的,遂尝试使用电脑自带的4.x版本的Dev先试一波
好家伙结果发现别说C++17了,连C++11都不能编译(后面发现其实是可以的,但需要一点技巧)
此时徐神就开始对学校机房致以了亲切的问候,好在后面可以ftp又能用了,赶紧装了个小熊猫凑合着用
各种杂七杂八的东西弄好后比赛也开始了,然而发现并没有纸质题面,好家伙CCPC Final热身赛重现是吧
我先大致扫了眼电子题面,发现E好像是个一眼题(flag来力),马上申请去写
刚坐下发现纸质题面终于来了,而且全是中文狠狠好评(犹记得去年校赛有好多题面巨长的阅读理解题,看得人头皮发麻)
刚写了一半E题祁神就发现K是个签到结论题,我马上让机给祁神,然后9min1A拿下K的一血
然后我接着上去写E,码完交了一发发现WA了,遂被赶下去冷静,发现原来没看见要找\(>1\)的极长段
好在徐神会了D的构造,接力上去很快18min一发过了D,但因为我写了一发E所以没抢到一血很遗憾
下机这段时间我又想到了种E的写法,过了D后又爬上去开修补,结果又喜提一发WA
但徐神又会了I这个博弈,于是我又被赶下去反思了,然后也是一发30min拿下I的一血
后面只能说故技重施,我又想了个点子fix之前E的做法,遂又冲上去修修补补,犹豫了半天还是再交了一发,果不其然又WA了
只能说前期邮电部诗人了,后面冷静了看了眼榜发现这题提交的一片红,目前也没有队过,遂选择先扔了滚去开别的题
祁神计划把A扔给我,但我看了眼题感觉A一点也不可做,遂找了个看起来比较顺眼的H开了
在下面思考的期间徐神上去写了C的\(O(n)\)大力DP,写完打了前\(10\)项出来发现一眼平方数求和,第一发因为没开__int128
WA了一发,54min2A
然后此时陷入了短暂的无题可写的状态,徐神便接手了我狂暴WA三发的E题,我专心开H,祁神在开A
和徐神大致讲了下我的思路后发现找最大操作次数没问题,但找最小的时候应该还要多分几种情况讨论
空了一会机后祁神申请上去写A,后面写完发现样例过不太去,打印代码看了会后鉴定为假了,而且感觉这题比预期的难很多,遂弃疗
然后徐神上去重写了一遍E题,我在下面勉强搞出了H题的写法但感觉不是很自然,因为看榜上过这个题的队都过得很快,感觉应该是更好写的东西
徐神在小WA了一发E后在157min5A了这个题(虽然有三发提交都是我开场冲的),然后我硬着头皮在中间的空机时把H写了,163min1A
只能说我每次写一些奇奇怪怪的东西总是能写的很快而且还经常一遍过,不知道是什么特性
(这题最后讲题时发现只要倒着做用单调栈就很好维护,但我比赛时铸币了选择正着做,还写了很鬼畜的并查集维护空位+二维数点的做法)
此时前期题基本上都开完了,看了眼榜发现可做的大致还有BF两个题,遂开始双开
F祁神推了个没有树限制情况下的贪心结论,发现要处理树情况只要能快速维护子树信息的合并即可,但这东西找不到复杂度正确的东西来实现
B我听了题意后感觉就很像个图上随机游走的题,而且\(k\)又是\(10^9\)级别感觉只能用矩乘来算了,遂让祁神上机去写个暴搜看下状态数是多少
好家伙搜出来有效的状态数只有\(209\)种,\(O(209^3\times \log k)\)的复杂度一眼对,遂赶紧爬上去写
不得不说这题细节啥的确实多,属于是那种思路不难但一定要花时间去写的题,摸到大概还有40min比赛结束的时候写出了第一个version
期间徐神提出了F题可以从上往下贪心合并的做法,同时发现可以把若干个点合并成一个大点(这几乎就是正解了),同时G题好像也疑似会写了
我赶紧加速Debug,想着争取多留点时间给徐神兴许还能再出一题,结果样例久久对不上就很难顶
后面发现直接把转移矩阵乘初始列向量三次得到的结果是对的,但把转移矩阵快速幂\(k+1\)次再乘初始列向量得到的结果就不对,非常神秘(flag*2)
赶紧打印代码滚下去让徐神写G,然后把祁神抓过来当小黄鸭仔细盘了遍逻辑,成功找到了两个非常隐蔽的错误
结果上机改完发现样例还是对不上,明明第二个样例也是直接手动矩乘结果就是对的,调用了矩阵快速幂后就不对
此时比赛只剩下5min了,我就开始随机乱输出一些东西,遂发现我的矩阵快速幂好像也没写错,那能是哪里出错了呢
“我艹你\(k\)的值为什么不是读进来的\(2\)啊!”徐神一语点醒梦中人,我才发现开始时读入的\(k\)被我拿去当循环变量了,导致\(k\)的值和预期不符当然会挂
妈的当场狠狠抽了自己两耳光,马上换变量名,好测样例,好过了,好删掉注释交一发
pending了许久后298min一发入魂B题,然后我们全队顿时爆发出了震耳的欢呼声,引起全场注目
然后剩下的1min就在我不断地复读“我TM是人啊,我TM是人啊”中结束了,只能说这波操作不仅一了我们队没有在现场赛封榜后过题的遗憾,还顺手拿下了顽强拼搏奖,赢麻了属于是
比赛结束后就是喜闻乐见的滚榜环节了,不得不说校赛的滚榜气氛是真的激情,欢呼声此起彼伏,比区域赛现场还要热闹许多
最后我们队喜提亚军200R、顽强拼搏奖50R,以及两个一血每个50R,最后血赚350R的JD卡
比较残念的是最后抽奖环节差一号抽中我们队,不然又可以嫖一本书了
(欢迎收看axs:从WF到深入浅出算法竞赛)
全部结束后也是来到喜闻乐见的WIFI请吃饭环节,但好巧不巧昨晚突降大雨,吃完饭后只能和祁神两个人凑一把伞跌跌撞撞摸回寝室,给校赛以及清明假期画下了句点
Postscript
打完反思就是这场我把全队演了,导致后期机时严重不足,徐神还没发力比赛就结束了
感觉队友都好猛啊,我这样犯病都能拖着我库库过题,看来之前的狂暴加训还是很有成效的
接下来几周事情也很多,蓝桥杯+4C接连进行,而且还有被提前了的暑假前集训的专题讲课
妈的还有下周计网的半期考试,不得不滚去复习了的说