HNCPC 2026 游记

· · 生活·游记

该值不应为空。

本文共 4300 个字符。

我本不愿写游记的,原因是我考得太差了,写这个越写越红温,但是教练要求了啊。

地点:吉首大学,位于湖南。

小队:z5qr_DeSuWa dzhjntm me。

成绩:大概金末银首,ABEFI,没调出种树。

Day -5

HNCPC 模拟赛。

和队员首次合作,然后被踩爆了,掉到 YZ rk4。

Day 0

出发!

欸坐车怎么要这么久,八点出发,两点左右才到。

车上首次入坑 sts,然后太菜被 yyf 喷了,电脑怎么 1h30min 就没电了。

看 xf 玩元气骑士,yyf 玩崩铁。

然后 yyf 下棋还被刚睡醒的椿神喷了,差点爆发大战,好恐怖。

睡睡睡,聊聊聊,颓颓颓,终于到了。

中午吃饭,菜还不错,只不过和椿神吃饭还是还是太有压力了,菜没的太快了,差点没吃饱。

下午试机,怎么是原题大赛,秒了 T2 但是懒得实现,交给队友开始翻词典颓废。

听说后面两题有一堆人会了正解单老哥实现但是 T 了?不是 n\le 2\times 10^5 和 10^6 吗。哦原来评测时间判的是测试点时间之和,轻松绷住。

晚上住酒店,很高极,电视有 vip,不错。

舍友:RiverBird208。

吃晚饭,怎么小朋友把每一个桌子都占领了,幸亏沃率队抢占半个桌子且完美避开椿神。

晚饭很美味,可是芥末罗氏虾这么好吃怎么没人吃,而且怎么有炸虫子。

看 xf 吃了半碗,他一边说好吃,一边差点吐了,轻松绷住。

晚饭吃完,我们注意到时间还早,才 20:00,遂随 xf 和 lhq 在古城(?)里逛街,买了蜜雪,玩了崩铁。

然后我们回酒店,开始颓废,打开货币战争,第一局拿下三星五费狼!

1h 后 xf 离了,我们开始看国漫,斗破斗罗真好看。

颓颓颓,不对怎么这么晚了,不对怎么加上下午都看了 15 集了,睡睡睡。

以上内容未进入给教练的游记。

Day 1

坏了昨晚熬太猛了,但是早上七点半起来毫无困感。

酒店早饭不是很好啊,没事至少有粉能吃。

八点二十出发了,九点五十到考场,先玩十分钟 surf(伏笔)。

开题,根据我们的经验,我直接倒叙开题找签到。

欸怎么从最后一题一直到 C 都不是签?怎么 A 有人过了?不对怎么 A 才是签到 🤡🤡🤡。

然后派遣 zfx 做 A,然后我来协助调试,4 分钟过了。

此时我胡出了 C,写写写,样例没过,做法假了。

这个时候 zfx 和 dzh 做出了 F,简单二维数点,zfx 上机,写写写,调调调,吃罚时,开长长,过过过。

与此同时,我正在拼命的瞪 C,然后暂时没有思路,于是和 dzh 跳 I,然后我胡了个做法,把刚刚 AC F 的 zfx 踹下去,写写写,调调调,吃罚时,错错错。

于是我又写假了,此时心态有点难受,下机想 I,此时 dzh 又上机写 E,甚至无缝衔接一分钟都没耽误。

E 思路大概是建出一个类似克鲁斯卡尔重构树的东西,然后并查集模拟即可。

dzh E 怎么挂了,随机合并并查集发力了,改成按秩和并。

dzh E 怎么还挂了,我放弃了和他调试,后面他过了,但是罚时 +4。

于是我又会做 I 了,直接按 b 数组从小到大模拟,用树状数组优化,上机写,怎么这么难写?都开了 4 个树状数组了。此时 dzh 和 zfx 看 B。

怎么挂了?怎么挂了?怎么挂了?

三人合力一起调,还是无法战胜。

zfx 又会 B 了,上机写,竟然过了,太巨了,数位 dp 大肘子,但看起来并不难,直接枚举数位的和,预处理出 f 函数值,然后像乘算总贡献即可。

我真的要红温了,怎么 I 还是没过啊啊啊,这真的是人均题吗。

完了我是奶龙,笑点解析,以下是我的代码插入部分:

if(a[i]==0)tr0.add(i,1);
if(a[i]==1)tr1.add(i,1);
if(a[i]==2)tr2.add(i,1);

以下是正解插入部分:

if(a[i]%3==0)tr0.add(i,1);
if(a[i]%3==1)tr1.add(i,1);
if(a[i]%3==2)tr2.add(i,1);

成功浪费 2h,竞选全场最奶龙之人。

而且我们的所有 hack 都满足 a_i\le 2。

最后只有一个半小时了,梭哈 C。

10min,dzh 秒了一个类似种树的反贪,我立刻领悟,上机写。

欸,不是我样例怎么没过,此时还剩 1h,dzh 一脚把我踹下来,写了另一个很丑的实现(不考虑第一个和最后一个,加了一大堆丑陋的特判),我强烈谴责这个实现。

他怎么调不出来了,我也跟着看。

构造一大堆 hack,他总是忘记输入 T。

这写的啥,最后 10min 他发现写的很丑,果断换写法,我们的代码编写软件怎么炸了,全屏怎么解除?最后 3min,用熟练的搞颓技巧切屏测样例,绷绷绷,啊啊啊怎么出来一个 surf,再 Alt+Tap,点错了怎么 surf 开始了,又点错了怎么还掉血了,开始测样例,怎么又没输入 T 啊,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈。

13:59:48 最后一发,最后的最后还是失败了。

下考了,我注意到我之前的种树写法是对的,在心里怒喷 dzh。

最终还是无法战胜了,ABEFI。

顺嘴一题,午饭真的完全不好吃,面包好干,味道还很独特,那个食堂就更拉,卤肉饭又咸又腻又难吃。

回去了,车上,开始玩三国杀。

玩家:椿神,委员会,交先生,xf,LiWenX,zyq。

前面忘了,中间只记得 xf 当忠臣,然后选了个很逆天的武将,开局 20 多张牌,牌无法被弃置,每回合只能出三张。

主公这辈子死不掉,我一个攒牌能力比较强的内奸都和反贼一直磨血,一直打不死。

最后,主公交先生和我们所有人除了 xf 一致同意平局。

看 lyp 打三角洲,然后睡睡睡,醒来后和交先生玩气球和棍子,要被自己唐死了,高素质椿帝还把气球往窗外丢。

结束了,最终到达清水塘,已经九点了。

过程略有遗憾,明年我要换队重来,尝试组建大椿帝国先遣队!

All in all

题目思路

这些和比赛过程才是给教练看的。

A

签到

题意是求一天内两个时刻间的一些关键时刻数量,其中关键时刻是满足时分秒其中两个的和等于另外一个。

考虑一天内的时刻特别少,直接枚举即可,判断是 O(1) 的。

B

数位 dp,定义 g(x) 表示摆成 x 的火柴棍数量,将 x=g(x) 迭代十次后的值称为 g(x)。

求出 a,b 之间所有 g(x) 之和,其中 a,b 有一千位。

你注意到一次迭代之后就只有几千种可能了,直接枚举第一次迭代后的数位火柴棍之和 i,然后跑数位 dp 求数量,同时预处理出所有的 g(i),将两个相乘算总贡献。

C

题意懒得简述了。

考虑转换题意,把所有 01 段大小全都求出来。

你注意到消掉一个 0 段会使得总段数 -1,消掉一个 1 段也一样,但不能让相邻的 0 段和 1 段同时消。

然后就变成了反贪板子种树,直接写即可。

E

没仔细看,但应该是克鲁斯卡尔重构树简单题。

F

没仔细看,但应该是二维数点简单题。

I

怎么别人做法都比我简单,坏了真搞复杂了。

我们先不考虑他们的做法,对于 b 数组,为了保证成功,肯定是从 1\sim n 一个一个移最好,这样肯定是对的。

于是我们直接上树状数组模拟这个东西,维护还没有被移到前面去的那些,然后你要移动关联的肯定是一段前缀。

然后使用树状数组查询这一段前缀,分别维护其中数的数量,模 3 意义下为 0,1,2 的即可。

然后我的做法代码比较难写,这个时候你应该看得懂我上面的笑点解析了,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈。

其他的好像都是中等偏难的和困难题啊,zyy 怎么做出来 H 的,强强。

反思

这次的比赛,结局略遗憾,但是体验最重要,来年我要尝试组建大椿帝国先遣队,再战!

我将夺回属于我的一切。

在此之前,尽管我没调出 HNCPC 的 C,但我一定能调出 CSP 的 C!

CSP 2026 rp++!

参演名单

顺序是乱排的。

zyq,交先生,zyy,lhq,委员会,lwx,椿神,zfx,dzh,xf。