2025CSP-S游记

本文同步于博客园

DAY -13

脱产了。正好还是运动会,到时候会有人一起在机房脱产。

DAY -12~-10

运动会,感觉好青春啊 hhh。这个气温也是迅速下降,好在机房还是冬暖夏凉。

DAY -9~-5

一个人在机房,但其实也还好,主要就是做同学的好题题单。模拟赛没咋打,因为我还得上一点文化课(哭哭)

DAY -4~0

有同学陪我一起脱产了!还是蛮开心的,脱产的每日日常增加了打球,真的太爽了

DAY 1

上午

又是一年好多度的流水账时刻

早上睡大觉,真的爽。然后先复习了字符串(伏笔了)和 \(\text{exgcd}\) ,然后和同学聊了聊天。

然后越来越紧张啊,真的特别特别紧张,中午去食堂吃饭的时候感觉手都拿不稳筷子了。好在碰见了一些文化课的同学,和同学玩了玩,竟然就不紧张了,真的好神奇啊。

考前给自己搞了个心理预设。考差也没关系,又不会死,最后反正都要高考,所以大可不必紧张。但是总是希望考的好点对吧,加油加油!

下午

\(\text{12:30}\) 出发, \(\text{13:10}\) 分就到杭师大了。勤园挺空旷的,是我没有来过的考场,之前好像都在恕园?

当时脑子空空,挺放松的没什么想法。因为到的比较早,和同学找了一个安静的地方休息和睡觉。

今天的风儿甚是喧嚣。今天的风挺大的,整个地方都充满了风带来的声音。风吹凉了眼睛,刮过鼻翼,桂花的香味趁机钻到了鼻子里,还是蛮有秋天的味道的。最近学校里的桂花也很香。之前摘了一枝,只让香味在机房留了一天。然后和同学照了张相,不照可惜了。

\(\text{14:00}\) 进入考场,感觉不错,还是比较清醒的。 \(\text{14:25}\) 下发密码。 \(\text{14:30}\) 开始 \(\text{T1}\) ,好!看看 \(\text{T1}\) ,不太会,想想想,稍微手玩一下,很快就会了。然后差不多 \(\text{15min}\) 写完。开始 \(\text{T2}\) ,这么神秘!不太会,想想想,看看数据范围 \(k<=10\) 。好,继续想,这个东西如果城市化不花钱的话,那么这就是一个裸的最小生成树,然后考虑加进来怎么做?我们直接 \(2^k\) 就行了。但是你的 \(m\) 真的太大了。我们考虑剪一点东西。发现我们搞出原图的生成树之后就很简单了!好,写写写, \(\text{15:07}\) 调完,测大样例,你怎么跑了 \(\text{3s}\) ,给并查集加了按秩合并,下面把排序换成了归并,有点难搞啊!然后在 \(\text{15:30}\) 左右搞完了,只跑了 \(\text{1.2s}\) ,感觉不错!看 \(\text{T3}\) ,是字符串!当时挺激动的,虽然好久没有做字符串了。首先我们往字符串匹配的方向想,大概就是两个串并在一起在另两个串并在一起中的出现次数。到这里想了大概半个小时,有了 \(L\sum^{2}\) 的做法,大概就是把两个字符串叠在一起做。一看数据范围,谔谔了,这怎么 \(5e6\) 啊,这不是哈希的数据范围?这我搞啥啊?其实当时有点崩溃,平时模拟赛打少了,平时练习这个时候大概就会去看题解,考试的时候真没想到怎么办。然后想了 \(\text{15min}\) 优化,没有成果。不能这样!然后重新鼓起勇气,开始写!仔细研究部分分,只有 \(\text{50}\) 分。唉,还是努力写!然后写写写,调调调,过大样例了,唉,这时候 \(\text{17:45}\) 了。开 \(\text{T4}\) ,稍微读读题,发现我们有阶乘做法!因为这是排列 \(\text{dp}\) ,那么我们往 \(\text{dp}\) 上想,大概是状压的样子,直接开写!然后稍微搞搞部分分,一直写到 \(\text{18:23}\) 都没有调出来。啊,气死我了,这亏的还是蛮多的。不能上头!强迫自己然后检查一下,建建文件夹就结束了。

希望不要有什么低级错误啊。

晚上

出考场,和同考场的同学讨论 \(\text{T3}\) 。到楼下,碰到了同学,蛮开心的。还碰到了高三学长,全部打暴力是吧!这分数要是太高了出题人可能就要被问候了。还有学长来关心我的考试了,蛮开心的!然后走路到大巴的路上一直在聊天。大巴上在写游记,然后就结束了。之后基本都是在看做法和讨论题目啊。

赛后回顾

稍微回想一下,好像还真没有什么策略失误,前两题发挥也很好,第三题看到是我最喜欢的算法也很开心,虽然最后没有想出来。第四题就是纯纯脑子已经不够用了,已经是混沌了。其实差不多我想完 \(\text{T3}\) 我的脑子就已经混沌了。

嗯,这是不是人生中最后一次 \(\text{csp}\) 了,高三的话不知道还有没有这个闲情来打。额,随便啦。

感觉还行,不过 \(\text{APIO}\) 应该是去不了了,如果这次考试运气好点,最后关头能把 \(\text{T4}\) 调出来的话, \(\text{APIO}\) 应该还有点希望。不过也没事,继续加油吧!

洛谷 \(\text{T1}\) 评绿? \(\text{T2}\) 是蓝我觉得确实差不多, \(\text{T3}\) 的紫也是意料之中, \(\text{T4}\) 纯粹没看。

\(\text{T3}\) 好像是扫描线 \(+\) 字典树?好吧好吧,没话说,考场上确实是转化偏掉了,我是把字符串合并到一起了,这样字符集就是 \(676\)。然后特殊字符也没有,往容斥的方向想了,这也挺自然的,之后就困在容斥的思路里出不去了,不过也还好。

\(\text{T2}\) 我的做法应该没问题吧。主要的问题就在于这个的最小生成树不是唯一的,这样我们的做法还对吗?考虑反证法,也就是说,可以通过另外一种最小生成树的构建方式,使得答案变得更优。考虑最小生成树构建的过程,我们有一种最小生成树的构建方式,也就是你搞出来一个最小生成树,然后你用新的边去替换原来的边。这个是次小生成树的做法。对于原图的最小生成树,我们会通过替换边的方式来获得最终的答案。那么在加入边的过程中我们会获取原树上这个点的路径边权 \(\max\) 如果 \(\max\) 不同,那么这个就和我们构建最小生成树时先加完边权小的边的这个性质矛盾了。可能证的有点麻烦,但应该就是这个思路

\(\text{T1}\) 原来我的做法是反悔贪心啊,那还是蛮高级的。这个用数学归纳法就可以证了,假设前 \(i-1\) 个我们的方案是最优的,现在我们加入第 \(i\) 个,那么加入后如果超过了众数出现次数的限制,我们就对里面的进行修改,所以我们这个做法其实也是对的。

之后会把 \(\text{T3}\) \(\text{T4}\) 补掉

理想分数 \(100+100+50+32=282\)

预期分数 \(100+100+50+8=258\)

实际 \(=\)

等成绩又是煎熬


碎碎念

upd on 11.2:

\(\text{T3}\):

阅读题解根本没看懂,有个老哥稍微给了个hint,吃饭的时候突然想到了正解做法!我们是把两个字符串合到一起,因为我是从取并集的做法搞过来的,但是我们完全可以把两个字符串前后拼一拼就可以了,具体而言,我原本的做法是这样
alt text
每个位置都是字符二元组,但是我们发现根本不用变成二元组。对于横线的部分,我们发现上下位置必定是相等的,所以我们直接保留上下中的一个即可。

对于中间,我们的长度肯定相等,所以我们直接把.....xxxxxx横过来排列即可。还是可能算重?我们直接用特殊字符搞一下,这样我的容斥也没有了,啊啊啊啊啊啊!!!!太妙了,这真的望尘莫及啊,很厉害很厉害,我甘拜下风。

代码很简单。

所以还是写题写少了,字符串的一些很经典的 \(\text{trick}\) 没有掌握,加油加油!

回归了文化课,压力山大,虽然已经提前意识到了高一的时候脱产两个月回去考 \(900\) 多名的惨痛教训,这次脱产并没有脱太久,在脱产的时候认真上了化学,但是还是蛮难的。直接累趴了。但是也还好,文化课基本跟的上。

人生真的太复杂了,所以很多时候思考的时候都是左右脑互搏的状态,我也很难说清楚我现在到底在干什么。你要说短期的目标,那么当然就是文化课和 \(\text{OI}\) 了。但是我一直想着,自己的爱好突然不干了很可惜啊。但是大学也可以啊。所以其实现在有两种声音。不过,我觉得,一个人有爱好能托付自己的激情的话会有意思很多吧,这是我的想法,不一定对的。

upd on 11.6:删掉了很多不切实际的东西

写这段话的原因第一个也是感慨吧,第二个也是讲个故事,之前看别人的游记也有被鼓励到的!出成绩的时候还会更新的


upd on 11.6

成绩出了,100+80+50+4

咋说呢,一等应该没啥问题,这就够了吧,但今年打的比去年遗憾挺多的。

体育课到机房,听说下发代码了,然后就把我代码下下来了。看看 \(\text{NOI}\) 官网的成绩,和预期差的不是特别特别大,主要就是 T2 比预期少了一点。

\(\text{T2}\) 写下了define int long long这个东西,考场上光卡代码了,这个东西忘记掉了,气死我了。不过也还好,小挂 \(20\) 分,不算特别多

\(\text{T4}\) 没话说,没写到 \(32\) 分单纯前面浪费时间加上实力问题

遗憾的第一个是 \(\text{T2}\) 吧,没能拿满分,这 \(\text{CCF}\) 也是第一次卡我常。第二个是 \(\text{T3}\) 吧,暴力分还挺多的,导致我的做法和暴力差不多。这也挺可惜的,但事实就是我考场上根本就把这个当作正常题来做了,忘掉了所有做字符串题的手法。我考场上想的的是两个字符串必定都要出现,那么叠起来这个想法也就不奇怪了。

没事没事。有遗憾之后会更频繁想起来吧!再见 \(\text{CSP}\)

更多感慨等到 \(\text{NOIP}\) 的时候吧,希望大家能够获得自己理想的成绩。

愿望总是传达不到流星

T4

upd on:11.18

现在来好好想下 \(\text{T4}\) 吧,\(32\) 分应该是我现在的极限了。

学习一下jiangly的做法

这题的trick是提前钦定是吧。

我们所有录用的人都要满足 \(c_k>i\),这个东西非常困难,考虑容斥。

也就是说,我们计算总的方案,减去钦定一个人不满足耐心值的方案,加上钦定两个人不满足耐心值的方案,本质是二项式反演,这样整道题目瞬间明朗了许多。

dp方程的第一维肯定是天数,第二维是我们钦定人耐心值不满足的个数,但是我们这样还是没办法搞出选了哪些人这个东西。所有人都是等价的,所以我们开一个以耐心为下标的桶。但是我们这样还是没办法明确知道前面有多少个人耐心值不满足,所以我们再开一维当前已经拒绝了多少个人

dp[i][j][k]转移到下一天。如果s[i+1]=0;

dp[i+1][j][k+1]+=dp[i][j][k]

如果s[i+1]=1

钦定这个人耐心值不满足,那么我们要从大的那些人里面挑出一个 n-sum[k],但是会不会已经被选过一些了呢?兑啊,这咋办。

还是没有理解透啊。我们钦定了一些人不录用,其它录不录用无所谓。

所以这题大概就是这么样一个东西。首先题目要求的是所有录用的让人都满足耐心值条件的这么一个东西。我们进行容斥,那么就变成了钦定一些录用的人不满足耐心值。

暴力怎么做?直接组合数钦定那些人不满足耐心值,然后我们把这个数组搞出来,每个位置如果s[i]=0,那么肯定没有被钦定,如果s[i]=1,那么如果录用,钦定不满足条件,那么这时这个要满足c<=拒绝人数,然后能选多少个人呢?前面钦定了多少个肯定不能选,如果录用且不钦定满足条件,我们发现如果这里就搞系数了,我们可能会选到耐心度小的人,这样就会对前面的决策产生影响,所以我们预留出这个人的位置。如果不录用,那么我们直接选耐心度小的人即可。那么在最后我们还有一些位置没有填,也就是s[i]=0或者s[i]=1且录用并且没有钦定的这些人,一共有

为了记录上面的信息来实现递推,设dp[i][j][k]为前i天,拒绝了j个人,使用了k个人(保证不录用/录用但钦定不满足)。注意,在递推的时候我们要把容斥的系数给记下来,因为后面无法得知前面的容斥系数

如果s[i]=0

dp[i+1][j+1][k]=dp[i][j][k]

如果s[i]=1

耐心阈值(这字竟然读yu,这辈子白活了)为j

录用,不钦定是否满足

dp[i+1][j][k]+=dp[i][j][k]

录用,钦定不满足

dp[i+1][j][k+1]-=(sum[j]-k)*dp[i][j][k]

不录用

dp[i+1][j+1][k+1]+=(sum[j]-k)*dp[i][j][k]

posted @ 2025-11-01 23:53  wuhupai  阅读(47)  评论(0)    收藏  举报