HNCPC 2026 游记

· · 生活·游记

第一次写游记 ( ^▽^ )!

前言

首先,感谢学校给我们机会体验 2026 HNCPC(湖南大学生计算机程序设计竞赛)的 ACM 程序设计竞赛)。

其次,感谢母亲全程陪同参赛!

这次真是一份全新的体验!

Day -2

晚上放学回家,拿出“准考证”,发现我们 The F.H.S. of Changsha(KXC Campus)竟然是通过“XJ 中学”的名义报名参加的。

于是,我们队伍的名称是:XJ 中学三队!(队员:clx201022、SRTS、Ycy8696)

非常期待后一天的旅程。

Day -1

早上 7:50 到学校集合,八点出头发车,乘坐大巴一路从长沙到吉首,大概下午两点左右到的。

路程好远,听歌都有点听腻了。在车上睡一会儿,反正那么就慢慢地熬过去了。

漫长的 6 小时啊!

细节:大巴车下错收费站了,经过收费站之后直接掉头重新上高速,呵呵。

等到了酒店,早已疲惫不堪。后来去试机,除了那个水得没边的 \text{A + B Problem},后面的试机题目一点思路都没有,整个脑子都是一片空白。还好只是试机。(后来问 Deepseek,说一个我和队友有点思路的是一道组合数学的题,另一道要用什么 NTT 之类的?被这个连 NOI 都不考的东西吓哭了)

其实,试机的时候,写代码的队友没发现 \text{A + B Problem} 是多测,然后差点就吃了一发罚时。

除此之外,实际的时候没带草稿纸,又想思考后面的问题,于是拿出手机,在画图软件上打草稿。真费劲 qwq。

午餐和晚餐都非常丰盛,都是些山珍海味(什么鸡鸭鱼、鲍鱼、甲鱼、牛肉、鱿鱼等等),很昂贵的样子,但是嘴巴倒是爽上了。

晚上自由活动,玩了会儿游戏,听着歌,睡了。

只有一个床,队友睡姿不太好,导致我只好打地铺,晚上醒了五六次,精神不太好。

Day 1

虽然精神没有那么好,但是为了比赛,肯定是得振奋起来的。

考室。一堆大学生,好像只看到了几个打星赛的队伍在我们考场。

我们组三个队员 A,B,C。我是队员 B,和队员 C 的实力相当,但队长(后文“队长”亦称作“队员”) A 的实力比我们高出一截。

A 题。我们组队员 A 快速发现是签到题,于是让我和队员 C 先开后面的题。

翻译完 B 题之后,好像没什么思路。接着开 C。队员 C 说有点像之前的某道题,但不会写。我突然觉得可能是 DP,于是赶紧尝试写一下朴素 DP。C 去看后面的题去了。

然后,我写了一个 O(n^2) 的暴力 DP。在此期间,A 一直在写 A 题,挂了一两次。不过后面他翻到 I 题,说他可以秒了,结果真把 I 切了。接着我把 C 的朴素 DP 写在电脑上,看后面队员 A 或 C 能不能尝试帮我优化。

后来看了眼排行榜,发现做 E 和 F 的人比较多。于是 A 和 C 去看 E,F 题。

我把朴素 DP 打完之后,一遍就过了样例,还是挺愉悦的!我把希望给到 A,想让他帮忙优化我的朴素 DP,就能又过一道题了!

结果这个命运直接给我 cos(cosplay)三角函数——暴跌。我问了两三遍,让队员 A 给我优化,结果每一遍的结果都是——“你自己想 / 你自己优化”。

我真的会谢!我要是自己会优化就不会让你优化了。

E 题后来被 A 切了。随后是 F。

F 题算是整场比赛我印象最深的一道题。这道题让我感受到 ACM / ICPC 赛制和 OI 赛制最大的区别,展示着我们队的团结。

等我写完 C 的暴力之后,队员 $C$ 把他的研究成果形式化地给到我。说看我能不能想到一个数据结构,可以快速对矩阵中每个格子统计其左上角与它颜色相同的点的个数。 我思考了一会儿,我想不到。我突然灵光一现,想到扫描线疑似可以?但 $C$ 说从一列到新的一列之后,行的结果不能复用。 结果,我被“带偏”了,发现扫描线“好像”不行。然后,我和队员 $C$ 又想了线段树、树上启发式合并、STL map 等等发现都不好维护。 扫描线真的不行……吗?可是我真的有预感,扫描线可以!我静下心,忘掉之前那个所谓的“扫描线不行”,冷静分析。(我发现别人讲的时候真的很容易被带偏!)我们先 $O(mn)$ 地枚举颜色。对于每个固定的颜色,仿照之前的扫描线思想,把它们离线下来并排好序,用树状数组 / 线段树处理 y 方向的个数,最后单点查个前缀和即可。 真的可以! 于是,这个 F 先经 $A$ 转化数学式子,再由 $C$ 进一步转化、形式化,最终由我($B$)想一个“数据结构”优化统计,在 $O(mn \log n)$ 的复杂度内做出来了! 成功爽切!这就是团结的力量!看到 AC 的那一刻,我们整个队都激动万分,欣喜若狂。 说到这里还要感谢我们的教练 [ysuperman](https://www.luogu.com.cn/user/72525),组内分享的时候给我分配了“扫描线”课件,让我对扫描线更加熟悉、深刻,最终才得以合作切掉 F。 至此,我们发现,目前看过的题目中“签到题”都被切掉了。 接下来继续开题。 我们想出 F 题的正解思路之后,队员 $C$ 去写 F 的代码了。我和 $A$ 开后面的题。翻到 G 题,$A$ 一眼说跳了,往后到 H。我看着那个 G 的样例解释图片,感觉有点像数学(是我最爱的数学呀!),于是产生了一种好奇的想法:要不试一试 G?$A$ 说让我试一试 G,他去看后面的题。 然后发现这个 G 真的是计算几何。队员 $A$ 让我现场(我带了《算法竞赛》(罗勇军著))自学计算几何。 ? ! ~~欢迎收看大型纪录片《0 基础萌新蒟蒻挑战计算几何然后被打得落花流水》。~~ 《从入门到入土》 最开始,我还真的一本正经地学起来,从浮点误差的修正到点、直线、向量的结构体表示,再到圆与线段的交点…… 突然发现,这个扇形和圆弧需要用一个圆和三个半平面表示,分别是扇形两条半径、扇形除圆心外的两个顶点所在直线(用于判断圆弧)。 然后就可知,这对于初学 1ms 的计算几何萌新蒟蒻我,无疑是极其雷霆、极其炸裂的! 首先,书上没有我需要的结构体定义,也没有“扇形”一章节;其次,这个代码也是非常之难写的。 即使我已经想出来方法(口糊。~~可能不对,勿喷~~):判断矩形顶点是否在扇形内、判断矩形线段与扇形是否有至少两个交点。但是,我觉得是不可做的。 我觉得真的可惜了,考场上尝试 0 基础自学计算几何,结果浪费那么多时间,什么都没做出来。。。 我自学 G 题的时候,队员 $C$ 在用 $A$ 做小黄鸭调试,做出了 F。没想到小黄鸭调试法这么有用!这波必须给到一个夯! 渐渐地,时间过得好快,还没怎么想题就仅剩最后一两个小时了。 我们看到榜单中 B 和 C 做的人比较多。于是希望在最后的时间看能不能争取做出一道以提升排名。 等我们把 B 想得差不多的时候,发现疑似是数位 DP。结果我们都不擅长写数位 DP,而且剩下的时间不多了,不熟练的情况下很难写完 + 调完。 最后半小时。听取队员 $A$ 的建议,我们把最后的希望给到了 C 题。结果最后什么都没有研究出来。。。 比赛,结束啦! 感觉前面挺悠闲的,为屏幕上闪过的一个绿色方框欢呼,也曾为了一道题调动全组的思维。后面那一个小时可能是有那么一点点慌了,忽然一下子冒出了好多事情,手忙脚乱。 最终,我们组切了 $4$ 道题,获得了 $4$ 个气球(虽然不知道后面气球被我们组其他人搞到哪里去了,反正有一个不见了,正好我就没分到我们组的气球,有点小遗憾)。 不过,对我来说,根据我们组的实力来看,$4$ 个题已经是一个很满意的结果了!(~~大佬们不要嫌弃,因为我们组也只有这样的水平~~)在所有大学的队伍(除开在我们前面的打星队),排在第三十名出头。 比赛结束后,我们前往吉首大学立心食堂就餐。三荤一素只要 12 元?!至少比我们学校便宜。说是大学食堂没有要求必须在那里吃,大学生可以选择在外面吃。如果食堂搞不好或者太贵,大家都出去吃,食堂就赚不到钱了。是么?原来如此啊。开眼界了。 餐后,带着考场发的一袋面包和之前自己买的没吃完的零食,坐上了返程的大巴。 一场快乐的吉首之旅加上一个漂亮的结果,还有一份全新的人生新体验,这趟旅程,值了! ~~我不太会写这种文章,可能有点像流水账,不喜勿喷。~~