游记 吉林长春 2025 年 CCPC 全国邀请赛(东北)暨第十九届 CCPC 东北地区大学生程序设计竞赛

前言

这是我第一次写游记 , 这似乎是一种叙事 + 描写 + 抒情的散文文体 , 上次写这种非议论性质的写景散文还是在初中QAQ

首先讲一下全过程 , 大概分为五个部分 , 第一是到达吉林长春的长春理工大学 , 第二是热身赛 , 第三是热身赛和正式赛的半天过渡 , 第四是正式赛 , 最后是结束环节 , 想看做题过程的可以直接跳转到第四部分

到达吉林长春的长春理工大学

我们队每人都拿了一些资料 , 我拿了以前印的板子 , F拿了算竞书上下册 , H拿了另一群板子 , 但是事实证明在真正打比赛的时候板子更多的是心理安慰~QAQ

我还拿了电脑 , 想到时候打周六的Div2 来着 , 结果玩着玩着就忘了 , 打完邀请赛又一直走路 , 当时回宾馆就已经身体爆炸了

差不多一点的时候集合去了南站 , 然后开始坐地铁

坐地铁真是一件神奇的事情 , 地铁是少有的加加速度不至于使我感到不适的封闭型交通工具

大概24号下午2点就到了火车站 , 这个时候我有点渴了(后悔没拿水..) , 之后去买火车站的矿泉水 , 店家非常狡猾地把碳酸和一氧化二氢的混合物放在视线能及的地方 , 然后把高纯度的一氧化二氢偷放到了无人注意的角落里

害得我找了2圈货架才发现水在哪里 , 然而550ml的水花了我4块钱..

等了一会就开始上高铁 , 我对任何封闭型交通工具都感到不适 , 高铁上玩了一会游戏 , 然后脑袋晕晕乎乎的 , 转着转着就到了 , 到了之后下高铁 , 发现到了吉林长春西站 , 出了车站去地铁 , 又开始坐吉林地铁

从1点多到4点多 , 在车厢和地底下待了3个小时 , 最后终于出来看到了吉林

感觉这个地方的云非常好看 , 生态也不错 , 人少

最后到了一个酒店(订酒店的全程还是有些曲折的 , 由于似乎长春的马拉松比赛也在近期举行 , 导致很多酒店都开不出我们学校队伍的房间)

然后就到酒店里啦

躺了一小会 , 差不多5点半的时候起来 , 得去吃饭+打热身赛 , 看了一下有堵车和要等十分钟的公交 , 算一下路径差不多1公里 , 因此直接走过去了

路上的时候还看到了一座大桥 , 最后闭幕式的时候跨过了它~

最后终于到了长春理工大学~

我觉得那里的云真是好看


之后就去签到啦 , 到了一个贵宾大厅之类的地方 , 然后报一下队名就给了三个袋子


里面大概是这几样 :
国赛手册 , 讲学校地图 , 参赛时间点和流程 , 报名队伍什么的 ;
几张饭券 , 中午17块晚上17块 , 但是实际上只有晚餐能用 , 因为我们到的时候已经吃不上中午饭了(悲) ;
参赛证 , 一个牌子 , 写着参赛人名字和队伍和学校 , 但是后来被我搞丢了 (悲) ;
杯子 , 印着"长春理工大学" , 算是一个纪念品 ;
参赛服 , 我最喜欢这个了

杯子 :

饭券 :

相关国赛手册内容 :

拿了饭券就去吃饭 , 买了一个10块的饼和5块的咖啡 , 但是咖啡真不好喝 , 太苦了

食堂环境

吃完时一看表发现6点13了 , 邀请赛3分钟开始 , 感觉赶去打比赛了QAQ

哇 ! 比赛环境 ! 真是好呀 ! 一下子有感觉了! ! !

于是开始做题

热身赛

首先配置环境 , 比赛时是VsCode编译器 , 没有任何插件(甚至debug都费劲) , Linux操作系统 , 键盘滑的像肥皂(反正我敲不明白) , 没有中文输入法(这个第二天正式赛的时候才发现)

热身赛的题目我两个队友都说似曾相识 , 似乎是去年的某几个题 , 一共四道(然鹅我一点印象都没有QAQ)

我们做出来了两个 , wa了好多发(算是提醒了明天)
一共ABCD四个题 , 首先开了D题 , 是一个博弈论 , F说是结论题而且他记得结论但是不记得解法

但是我们交了两发都wa了 , 后来发现提交的页面题目的顺序和实际题目的顺序不对....

比如纸质题目的D题是博弈论 , 而提交的时候是C题博弈论

我们开始一直交错 , 后来才发现

要是正式赛有这种情况主办方就要被骂死了

过了D之后 , 剩下三个题都看了

A我觉得是一个树链剖分 , 大概就是找到一个树上两片叶子的往上的第一个公共枝干

大概长这个样子 , 然后求1号叶子和2号叶子的最早的公共枝干

感觉是一个很经典的题 , 但是我和队友都忘记拿板子了(因为热身赛嘛 , 啥都没拿)
然后就没做

B题是一个括号题 , 我们读假了(读错题)

题意就是给一棵树 , 然后求树的生成方式

最开始一个节点 , 有两种可能的操作 , 第一种就是在最右侧加一个节点 , 这种是有序的
第二种是设置一些节点的合并点(无序的)
我们误认为只有小的树枝加了之后 , 才能加大树枝
实际上除了叶子节点之外 , 大小树枝可以随便加

所以也没做出来QAQ
C题给定一个数字x和操作次数k , 求可以生成多少种数字
操作有两种 , 第一种是开根号下取整 , 第二种是平方
然后考虑只使用第一种操作 ,就是开根号 , 那么就有sqrt(17) = 4 , 然后sqrt(4) = 2 , sqrt(2) = 1 , 这个时候发现1开根号还是1 , 也就没有更多数了
比如说 x = 100 , k = 1000 , 那么100的1次平方 , 2次平方 .... 1000次平方肯定各不相同 , 而x开一次根号 , 2次根号 .... 1000次根号肯定是有限的 , 因为用不了几次就会变成1 , 然后重复一直都是sqrt(1) = 1了 , 不会贡献新的数字了

这是两种情况 , 只用操作1和操作2的情况

第三种情况是操作1和操作2一起用 , 那么一起用是什么情况呢 ?

考虑首先进行平方操作再进行开根 , 这个时候没有意义 , 因为假设平方了\(k_1\)(这个是latex , 可以脑补一下字母k的右下角有一个小1) 次 , 而开根号操作进行了\(k_2\)次 , 那么实际上就相当于平方了\(k_1 - k_2\)次或者开根了\(k_2-k_1\)次 , 因为平方再开根还是原值. 所以平方再开根的操作必然是包括在前两种里的

所以只可能是开根之后平方 , 什么时候进行平方操作呢 ? 当$sqrt(x) \times sqrt(x) \neq x $时 , 对sqrt(x)的平方操作将会是全新的值了 , 此后就可以了

那么当遇到\(sqrt(x) \times(乘法的意思) sqrt(x) \neq x\)时 , 需要平方几次呢 ? 假设开根号到sqrt(x)用了\(t\)次 , 那么一共可以操作\(k\)次 , 所以我们还剩下\(k - t\)次可以对sqrt(x)进行操作

这个题是我写的 , 所以印象深刻

然后热身赛就结束了

热身赛和正式赛的半天过渡

打完热身赛大概8点多 , 累死 , 又堵车 , 走回去

回到宾馆之后看了新衣服 , 真好看呐

第二天就要打正式赛了 , 时间安排写着有开幕式什么的 , 但是队友说似乎都是主办方打广告之类的 , 而且队友也说太早了起不来 , 所以就不去了

第二天

早上5点多醒了 , 然后睡了 ; 然后又醒了 , 换上衣服去吃饭

酒店有自助餐 , 吃了两片火腿 , 一点蛋炒饭 , 几个黄瓜 , 还有花生 , 还有牛奶 , 还有玉米

由于已经徒步过了两次 , 因此意识到了没有多远 , 直接走过去了

路上还遇到大爷问我们是不是马拉松志愿者(可能是看到我们统一的参赛服误认为是志愿服QAQ)

差不多9点20开始比赛 , 然后中途五个小时 , 比赛到2点20

但是后面又推迟了(没错 , 又是因为马拉松 , 感觉已经成为暗线了...)
说因为有马拉松所以一些队伍还没到 , 推迟到了9点25开始 , 到下午14点25结束

中间11点多的时候发了一个小汉堡和奥利奥和可乐 , 比赛有一点挤 , 但是无伤大雅 ; 唯一遗憾是没有大榜 , 导致每次看别人进度还需要调出榜来 , 少了一点氛围感

另外就是开始之前不能碰键盘(还得开始之后调试环境...)

然后一下子就9点25了 , 比赛开始

正式赛

9:25开始比赛 , 我和H找签 , F开VsCode写自动运行脚本

拿了题目开始找签 , 先看A题 , 看了5秒发现字太多了 ,所以应该不是签 , 所以直接开始看B题 , B说可以交换可以删除 , 似乎是构造题 , 可以考虑把连续递增的数字删掉 , 但是显然不是签到题
后面看到了C , C是一个高中语文第一篇阅读1000多字 , 扑克啥的 , 一看就是大模拟 , 看了一眼之后我整场比赛再也没看过它...

这个时候H说G是签到 , 图上加边使得所有度为偶数 , 交了AC一发 ;

过了G之后 , H看了下A , 我由于大脑缓存不足难以理解超过500字的题目 , 所以让H给我讲下A , 发现A是一个gcd和最小值的问题 , 自然而然想到这两个都可以用ST表求 , 思考有没有什么O(n)或者O(nlogn)的方式

一般这种题无非两种套路 , 要么双指针要么二分

感觉还是非常有思路的 , 于是我看A题 , F和H去看K题

手玩几个数据 , 比如 2 6 8 和8 6 2 发现并没有可以适用于双指针的性质

那么考虑枚举每个数字作为最小值 , 首先可以用单调栈预处理出每个点左右第一个比它大的下标 , 并且需要预处理出一个gcd的ST表 , 再之后通过对这个点左右方向进行二分查找找到边界 , 之后左右区间长度(包含该数)相乘就是该数对ans的贡献

复杂度如何呢 ? 显然是O(nlogn) , 可行的

与此同时F和H基本想出了K题 , 一个贪心 , 然后测试几个样例 , 改了几个bug , 交上去就过了

这个时候我给F讲了我的A题思路 , F说好 , 我来写 , 我也说好 , 正好我忘记ST表怎么写了

写着写着F发现自己也忘记怎么写ST表了 , 于是开始翻阅算竞书(这是5小时比赛中这些纸质资料唯一一次被用到..)

A题码量还是很大的 , 写了一会开始debug , 单调栈爆炸了 , ST表爆炸了 , 要么compile error 要么 runtime error

这个时候H在想f题(为了区分用小写) , 似乎很简单 , 于是列一个取最小时针和分针角度的式子加起来 , 然后暴力求所有时间

这个时候发现样例过不了 , 哦 , 原来是时钟度数 , 于是改了时钟度数 , 交上去wa了

怎么会wa呢 ? 我和H想错误 , F继续写A的代码

然后我意识到了一个问题 , 即可能一点半的时候时针指向了1和2中间(虽然感觉是显然的 , 但是赛场上 + 题目描述缺德真的让它不是很显然)

于是我和F说 , F说这怎么可能呢 ? 它要求输出整数呀

我:怎么不能呢 ? 你看人家画的图就没有指到整点

于是决定发一个问题问下主办方 , 这个时候发现电脑并没有装中文输入法QAQ , 于是我想写英语问主办方

但是这个时候我又发现我的英语已经退化到了小学3年级QAQ , 于是我决定写拼音问主办方

写拼音问了之后 , 主办方说是1和2中间 , 应证了我的想法

然后就简单了 , 调一下bug , 改一下时间 , 敲敲键盘 , 乱七八糟的 , 交上去就过了

这个时候已经过了三个题了 , F继续写A , 我开始和H一起看I , 看了一会 , 啊 ,这不是图论诈骗题嘛 , 怎么现在才发现 !

于是让F停下写A , 我写了I , 然后交了 , 没想到真是诈骗题 , 一交就过

之后F继续写A , 又开始调各种bug , 对全 1 的样例改了好多次 , 最后调着调着就好了 , 然后一交就过了

这个时候已经过了五道题了 , 基本上铜牌 , 再写一道就能银

看了下榜单发现可以写H题 , 于是开始想 , 看到最小化最大值感觉就是二分 , 然后想复杂了 , 越想越乱 , 最后想到什么"对匈牙利算法进行量化"之类的妖魔鬼怪 , 但是如果真的那么难不至于那么多人过 , 现场一度陷入僵局

后来H提出一个思路 , 即"如果我们右侧大于等于那个的总和减去那个啥啥, 那是不是就能说明那个呀"

我和F一听 , 恍然大悟 , 发现并不能举出反例 , 于是写了 , 写了之后交了 , 然后wa了

这个时候发现不对呀 , 二分答案有问题 , 上界是\(2 \times 10^{17}\)才对 , 改了之后又交 , 然后又wa了QAQ

又经过了几十分钟的僵持 , 我们三个把题想了个遍 , 拼命找反例和检查二分和测试long long int的上界 , 最后突然发现原来读错题了QAQ

赶紧改了七八个字母 , 然后交了就过了

最后时间差不多剩下40分钟 , 后面想做B也想做L , 但是后面没有时间了 , 于是没有下一题了(其实L是可以做的 , 只是代码量大一点 , 但是实在是h题浪费太多时间了)


结束环节

我认为结束环节是整个过程中最差的一环节

尽管由于我自身因素 , 导致坐出租车 , 坐高铁 , 坐地铁等过程非常难受 , 以及没有大榜带来的一点遗憾

但是它们加起来没有结束环节差 !

结束环节分为三个部分 , 第一是讲题 , 那个重庆普通话的学姐讲题非常好 , 帮助我学习重庆语 ;

第三部分是颁奖 , 一个普通的颁奖 , 没有什么好坏可谈 ;

第二部分是滚榜 , 可恶哇 ! 世界上居然有滚榜不念队伍的XCPC比赛 !(气!)

本来我以为他们只是不念最后那些 , 后来以为只是不念铁牌 , 再后来以为只是不念铜牌 , 再再后来以为是只念银牌金牌 , 再再再后来以为只念金牌 ..

没想到一个都不念的

好吧 , 算了 , 毕竟拿了银牌

(累死了 , 但是真好玩 , 下次还打)

posted @ 2025-05-25 23:26  Guaninf  阅读(691)  评论(0)    收藏  举报