2024年百度之星程序设计大赛 - 决赛 游记
Preface
个人赛+旅游,算是非常难得的组合:之前能出去玩的都是组队赛,个人赛基本都是在网上或者成都本地打的
虽然学校啥也不报销需要自费 2k+ 参加比赛,不过对于像我这样的从没去过首都的人来说还是值得一游的
最后和徐神一起比完赛后在北京小玩了一天,不过残念的是因为当时预留的旅游日是周一,而北京很多地方周一不开放,只能浅浅逛了几个地方
关于比赛,我只能说这就是大学组啊,被高中爷打爆也能摄金
开局被 A 单防半小时还没过,写完 B 到 G 才回头 2h 过 A
封榜前把 I 摸出来了,然后一直罚坐到结束,最后虽然罚时爆炸但还是靠题数苟了个 Au
可惜的是如果开局不唐把罚时打好点的话兴许可以再嫖点奖品回去,不过也无伤大雅的说
Day 0
经典周日比赛周六出发,虽然又是沟槽的天府机场,但因为定的是 11:30 的飞机因此时间还算宽裕
出发前突然想起来笔记本摄像头是坏的,外接的摄像头被我扔在机房了;虽然线下赛估计没摄像头也无所谓但保险起见还是跑去拿了
随后的过程都是经典赶路,差不多从早上七点一直到下午五点左右才到酒店,不过不得不说北京的地铁系统是真的发达,不愧是最早拥有地铁的城市
到了酒店已是饥肠辘辘,一天下来只吃了早饭,以及飞机上发的一个聊胜于无的汉堡
本来想着去外面大吃一顿,但犹记得上次在重庆被头天晚上的火锅干的第二天比赛状态全无,遂作罢经典点 K记 外卖
然后我和徐神两个人狂炫四人餐,其中牢闪一人独吃两个汉堡半只全鸡,一堆杂七杂八的小吃和两杯可乐,这个饭量我只能说无敌了
由于早上起了大早吃完饭后十分困乏,但还是硬着头皮下去打热身赛适应下场地
到了比赛地点发现这座位不是一般的狭窄,外接的键盘都没办法放在桌子上而是只能搁在笔记本键盘上,但好在没有复刻今年武汉的一队两椅的盛况
热身赛的时候顶着巨大的困意在打,上来 A 题以为是个煞笔组合计数,然后写了好几种方法交上去全 WA 了,仔细一想感觉都要算重
后面老实去写了个类似 DP 套 DP 的东西来计数,这下写完倒是一遍过了,看了眼时间被 A 卡了快 40min,也是神人了(flag:第二天还有的卡呢)
B 题是个 Counting,触发了怯战蜥蜴 Buff 自动放弃;然后看了眼 C 发现是个煞笔二分答案,写完交上去就过了,遂直接撤退回房间
回去后赶紧洗了个澡滚去睡觉了,印象中好像 10 点没到就睡着了,感觉可能是近一年里睡得最早的一次了
Day 1
比赛日,一觉睡到了七点过,久违地感觉神清气爽,让人感觉今天肯定不会犯病了(flag)
到了场地后罚坐了会后比赛就开始了,虽然不是第一次打这种大规模的现场赛了,但没有队友带飞总感觉心里没底
开场顺序开题,A 一看就是个煞笔搜索,光速写完也没测极限数据,直接交一发然后喜提 TLE
当时想着可能是我搜索的实现不好,比如 \(\{1,2,3\},\{4,5,6\}\) 和 \(\{4,5,6\},\{1,2,3\}\) 这两种本质相同的方案搜了多次,遂修改后又交了几发
随后喜提 WA*2 以及 TLE*1,险些当场红温破防;但好在今年多校类似的情况已经出现很多次了,只好硬着头皮把 A 扔了先写后面的题
B,C 都是一眼签,写完后看 D 发现好像不是那么一眼,遂看了眼榜决定先去写后面过的人更多的题
E 是个三合一,第一问二分,第二问模拟都很显然,然而第三问刚开始没想清楚以为也是个模拟,连着 WA 了两发后才意识到起始位置没有确定
手玩了一下发现确定了起始位置后后面还是贪心地选最优,因此倒着推一下就行,写完交上去也是过了这题
F 一眼 DP 出以某个数为峰值时左右的方案数,转移用树状数组优化下,很快写完一遍过了
G 看完发现求出每条边走过的次数后就变成一个经典的贪心问题,写了个树上差分 + LCA,然后拿堆优化一下选取过程即可,最后复杂度两个 \(\log\) 也是跑过去了
写完 G 后看了眼后面的题过题人数决定先回头把剩下的 A,D 先写了,此时过了一些题后手感也是热了起来,脑子也清醒了许多
最后 A 写了状压 DP 并剪枝去掉了一些无用状态后也是堪堪跑过,终于在 2h 左右过了这个签到题
随后开 D,发现这题的修改好像不怎么关键,因为只改了权值而不修改字符本身,所以感觉可以预处理很多东西
思考了一会发现对于一个序列中最左边的元素,如果下一个与它相同的元素出现了,那么直接跳转过去即可,中间的对答案没有影响;否则这个位置一定会产生贡献
因此很容易想到用倍增优化找相同元素的过程,同时由于字符集大小只有 \(26\),因此暴力地重复上述过程复杂度就是对的
此时看了眼榜发现喜提同题数罚时倒一了,不过赛程才刚过半,还有的是时间写后面的题
先把后面几个题的题意都大致看了一遍,发现还是 I 这个题看起来最可做
刚开始出了一个 naive 的贪心的做法:不难发现每条树边一定要贡献 \(1\) 次到答案中,同时每条边在不建立新边的情况下还要额外贡献 \(1\) 次
手玩一下会发现当建立连接两点的新边时,它们在树上路径上的所有边贡献都会变成 \(0\),因此就是个贪心地找直径的过程,写完交上去发现 WA 飞了
对着代码看了很久感觉应该不是实现的问题,遂开始手玩一些 Case,最后成功找到反例,并发现连接两点的新边会把它们在树上路径上的所有边的贡献异或上 \(1\)
有了这个性质后就是经典转化了,将树上路径差分转化后,发现一条边是否产生贡献仅仅与子树内选取的关键点数量的奇偶性有关
因此做一个非常经典的树形背包 DP 即可,中间还写假了好几发最后在 4h 时才过了这个题,这时候看榜发现已经大概率有 Au 了,遂放心下来开始吃饭
最后 1h 感觉 H 这个 DS 很可做,但无奈想不到关键转化;K 一眼模拟费用流,但发现这题种类有点多,带悔贪心给自己绕晕了
罚坐了半天最后也是终于等到比赛结束了,不过两点结束的比赛硬是要等到晚上七点多才颁奖,而我和徐神为了方便明天的出游把后面两天的酒店定在了天安门附近,这下也没房间可以回去休息
不过好在比赛场地内有空调有网线,遂直接原地坐下开始下棋;徐神也是经典爬塔启动,摸着摸着也是熬到了颁奖环节,算是没什么悬念的混了枚 Au
领完奖后直接跑路去了新的酒店,由于徐神晚上把餐卷整没了因此去边上的前门步行街逛吃
逛了一圈发现这条街上卖的东西重复率极高,基本就是炸酱面、门钉肉饼(我称之为钉耙肉饼)、爆肚、炒肝、驴打滚云云,最后也是浅尝了一圈后回酒店休息了
由于第二天早上预约了天安门看升旗,不得不 4:20 早起,因此这天晚上也是早早入睡了
Day 2
久违地起了个大早,不得不说在成都待久了感觉北京的天亮的好早,才四五点天就已经蒙蒙亮了
和徐神两人徒步乱窜也是摸到了天安门附近,后面我就放弃看导航了直接跟着人流走,事实证明一般情况下这种从众还是很有助于找到正确的路的
到天安门广场的时候差不多还有 15min 到升旗的点,此时旗杆周围已经是里三层外三层的围满了人
尝试往里面突破了几次后发现无果只得作罢,最后全程下来除了能看见国旗升上去之外啥也没看见,感觉要抢占前排位置估计得晚上带帐篷驻扎着才行了
因为当天是周一因此毛主席纪念馆也没有开放,只能逛了会人民英雄纪念碑和人民大会堂后就跟着人群撤退了
由于时间还很早遂先赶回酒店睡了个回笼觉,差不多 10 点左右起床坐地铁去王府井附近吃烤鸭
在王府井最大的感受就是它很符合想象中的那种老式商业街的感觉,建筑大多是古典的;虽不及春熙路繁华现代,但也别有一番韵味
酒足饭饱后也是直奔颐和园而去,由于前面提到的周一许多景点不开放,因此长城和颐和园几乎成为了广大游客的唯二选择
但长城对于我这种体力吃紧的人来说感觉还是难度太高了点,遂决定在颐和园转悠一个下午
和徐神一路走走歇歇也算是基本把里面的景点逛了一遍,不得不感叹老佛爷好大的雅致修得这汇集南北园林精粹的景致,让人好生羡慕
逛完颐和园后本来还计划着去清华北大打个卡的,但后面发现周一连清北也不开放,想着特意跑一趟进不去也没什么意思,遂打道回府
晚饭找了家铜锅涮肉解决,明明是在市中心附近,价格便宜的同时分量和口味都让人赞不绝口,感觉与之相比成都的物价显得是如此得高
吃到扶墙而出后慢慢踱步回了酒店,此时终于有时间和精力想起我的老本行了,小推了一会 Gal 后发现一天的奔波使得身体疲惫不堪,遂早早地睡下了
Day 3
不得不感慨在北京这几天竟然把暑假集训那抽象至极的生物钟调整得正常了许多
返程的途中在偌大的大兴机场,望着一望无际的湛蓝的天空,我想也是时候为这场短暂但难忘的北京之旅画上句号了
回去的路上一直不禁地在想,如果没有算竞的话我的大学生活会是什么样的呢
虽然不能说一定是黯淡无光,但绝不会像现在这样充满了激情和活力;平时总说因为训练导致没时间出去旅游云云,但估计真有了时间也还是宅在家里或是寝室里摆烂吧
“这么想来,感觉也不坏呢”,我如是想到,又一次踏进了熟悉的 UESTC 校门……
Postscript
估计是参加的最后一场个人赛了,今年上半年打的一堆比赛也都算是了结了去年的遗憾
下半年 Regional 打完也到了和算竞说再见的时候了,希望能体面地退役的说