2025 CSP-S 模拟赛总结(乱炖无题解)

2025 CSP-S 模拟赛

DAY 1

8:00 ~ 8:30

比赛开始了,看看 \(T1\),感觉贪心挺对的,每个位置动态维护一个集合表示跨过这个位置的限制,然后尽可能的把 \(-1\) 往前面放就行了。

8:30 ~ 9:00

看看 \(T2\),感觉有点奇怪,这操作很难维护,想想能不能转换一下,发现只需要把操作序列倒过来,就相当于每次选择每个点放在序列的最前面。但是还是没有什么思路。

9:00 ~ 9:30

发现,把一个数字放在最前面,比它小的那些我之前再怎么操作都没有意义,且之后每个比它小的至少要再被操作一次。于是考虑根据每个数字它最后一次被操作的时刻设状态,于是有 \(f_{x,i}\) 表示已经进行了 \(i\) 次操作,\([x,n]\) 在之后都不会被操作的方案数,简单优化一下可以做到 \(\Omicron(nm)\)

9:30 ~ 10:30

还剩下最后 \(10\) 分,优势在我,开始打表,发现用尽了所有手段依旧无法通过这道题。再回头,原来自己耽误了整整一个小时。

10:30 ~ 12:00

赶快看一眼 \(T3\),分析一下,发现这东西就是维护把一堆 \(1\) 合并起来,并且合并的顺序不影响最终答案,写个线段树每次合并一下俩区间非常套路。此时心中非常兴奋,还很慌,开始很快速地写,发现我的写法有很多边界和细节,一直没调出来,最后发现了问题在哪,但是时间已经不够了。

\(290\),但是最后只拿了 \(100+90+0+0=190\)。而且 \(T4\) 也没看。

听题解。

\(T2\) 说是和第二类斯特林数有关,之前基本没有接触过斯特林数,去学了一下,发现原来我的递推和斯特林数的递推一模一样。然后手玩了一下,发现最后的答案就是某一行第二类斯特林数的区间和。

\(T3\) 我写的是直接抛弃大脑的做法,缺点是难写且细节多,正解更为深刻一些,经过一些神秘转化之后变成了进行一些异或运算后奇数位置上的 \(1\) 与偶数位置上 \(1\) 的数量关系,确实很妙。

\(T4\) \(\Omicron(n^2)\)\(dp\) 确实简单哈。至于 \(\Omicron(n\log^2 n)\) 的做法是对暴力 \(dp\) 的优化,使用 单侧递归线段树 / \(CDQ\) 分治 实现。至于 \(\Omicron(n \log n)\) 的做法,需要使用一些手法,大致就是在 \(CDQ\) 的时候使用 双向链表 / 单调栈 来维护,可以做到线性转移。不过没太听懂。

总结:

  • 应该先总的把题看一下,也不至于死磕 \(T2\)\(10\) 分。老毛病一直改不掉。
  • 也不知道写 \(T3\) 的时候一直在慌什么,只有一个小细节错了,心态要平稳。
  • 以后 \(T4\) 的暴力还是要尽量写的。

DAY 2

8:00 ~ 8:15

先大概把题看一眼,\(T1\) 简单题,\(T2\) 长得像个推式子的,优势在我,\(T3\) 应该是 \(dp\)\(T4\) 应该是维护个连通块然后怎么合并一下。随后去上了个厕所。

8:15 ~ 9:10

\(T1\),中间发现 \(dp\) 的式子推错了,然后发现需要多开一维,开始重写。写完之后发现式子又推错了,改过之后就过了,看眼时间,怎么已经过了一个多小时了。

9:10 ~ 9:20

\(T2\),大概就是把取模拆成了下取整,然后发现可以整除分块,发现 \(\Omicron(n\sqrt V)\) 竟然有 \(60pts\)。感觉可能有什么规律,开始写。

9:10 ~ 9:40

写完了,发现 RE

9:40 ~ 10:40

感觉时间过了很久,然后就是一直在调调调,怎么也不过去样例。发现有个数学计算可以直接使用上 / 下取整,改过之后发现终于过掉了样例。发现时间已经只剩下 1h20min,于是不敢打表找规律了,赶快去看后面的题。

10:40 ~ 10:50

看了眼 \(T3\),感觉 \(50pts\) 就是送的。

10:50 ~ 12:00

然后开始写,写完直接过了小样例,但是却怎么也不过了大样例。又开始调试和打表,一直到比赛结束都没有把送的 \(50pts\) 调出来。中间看了一眼 \(T4\),发现 \(55pts\) 也挺送的,不要维护颜色,颜色反转之后直接无脑启发式合并就行了,但是应该也不好写。

最后得分:\(100+20+15+0=135\)

\(T2\) 被卡常,和暴力一个分。\(T3\) 没调出来就不说啥了。

看题解。

\(T2\) 正解推出式子之后运用了一个良好的性质:\(\lfloor {a\over m} \rfloor + \lfloor {b\over m} \rfloor = \lfloor {a+b\over m} \rfloor + [a\%m+b\%m\ge m]\),于是应用一些简单的代数变换,就可以把问题转化为对每一个 \(m\) 求 艾弗森 括号的值的和,于是就变成了一堆下取整相加,做一下差分,最后前缀和统计一下答案就好了,时间复杂度 \(\Omicron(V\log V)\)

\(T3\) 确实就是对 \(50pts\) 的部分进行了优化。但是由于我的 \(dp\) 方程状态并不优秀,导致不好优化,所以没啥前途,止步 \(50\)。优化就是用了一个很套路的 单调队列 然后发现对于有一些值进行了很多次重复的计算,但转移中这一部分的贡献没有发生改变,于是把这个优化掉就结束了,时间复杂度 \(\Omicron((m+M)n)\)

\(T4\) 就是启发式合并的同时,根号分治一下,分为大块的小块,大块每种颜色开个 set 之类的直接维护一下,小块直接遍历一遍,最后的复杂度 \(\Omicron(nm\sqrt {nm})\) (可能还要带个 \(\log\),精细实现如使用 懒删除 之类的东西,可以将 \(\log\) 优化掉)。

总结:

  • 代码能力需要提高,总是有一些 corner case 考虑不到,或者逻辑上出小问题,导致这场浪费了一半多的时间在调试上面,而真正思考的时间却非常少。
  • \(dp\) 的优化要敏感,比如使用单调队列,观察转移过程中是否存在很多的冗余情况,把某一下标提出独立处理等,同时也要在保证复杂度的同时尽可能优化 \(dp\) 的状态,状态优秀的情况下 \(dp\) 才更有前途。
  • 对一些套路还不够熟练,总是想不到在图上对连通块大小根号分治。

DAY 3

具体时间记不清了。

看了 \(T1\),发现有点不太会,想了一会还是只会模拟 \(\Omicron(n)\)check,于是就先去看 \(T2\) 了。

看了一会,发现 \(T2\) 好像挺简单的。又看了一眼 \(T3\),花了 \(5min\) 想了一个很 鸡肋 的性质,一个区间有解的充要条件是极长连续 \(1\) 个数满足限制,\(0\) 亦然,但是还要构造方案。于是又回来想 \(T1\)

突然发现最后的答案一定是一段首尾相接的线段,然后不同段之间有交,如果没有交就好做了。于是发现放缩一下不会影响答案的正确性,于是就会了,马上过了 \(T1\)

立马开始写 \(T2\)。写完发现没过大样例,开始调试但是改完几个小错误发现实在没啥问题,想了一下发先最后的去重有点假。有点慌,出去外面安静了一会,发现我只会 \(\Omicron(mn\log m)\),把二分改成双指针就是 \(\Omicron(nm)\),又想了大概半小时,没有任何新的进展。是不是只有 \(50pts\) 了,感觉是的。很沮丧,准备回来写一下,发现 \(1\le n\le 10^3,1\le m \le 10^5\),糖丸了,原来 \(\Omicron(nm)\) 能过啊,写完马上就过了。

这时比赛只剩下 \(30min\),回想起来我之前想到的 \(T3\) 的性质,写了个暴力就结束了。

最后得分:\(100+100+30+0=230\)

好多人 \(T2\) 挂成了 \(50pts\)

看题解。

发现 \(T3\) 很幽默,判断区间有解之后怎么做?其实已经结束了,直接两次线段树二分找到最靠前情况下最小的有解区间即可。这没想到糖丸了。

\(T4\) 还是有点难度的,但是不多。感性理解 打表 发现答案大概率不会太大。于是分类讨论:

  • 如果存在某个连通块不是 。那么块内一定存在一个点反转边之后使得所有的点联通。于是写个圆方树判断一下即可。
  • 如果都是
    • 团的个数多于 \(2\)。发现不同的团内任意选两个点都可以经过第三个团使得图联通,或者是在大小恰好为 \(2\) 的团内把两个点都选上就行。
    • 团的个数等于 \(2\)。手玩一下,发现如果一个团只选了一部分点,那么一定会和另一部分分离,于是必须把整个团都选上,此时最少的点数就是较小的那个团。

总结:

  • 还是提高码力。
  • 不要把问题想复杂,多尝试一些套路,不要一下就觉得它不行。
  • dyh:前三题全都是模拟题吧。

DAY 4

具体时间记不清了。

\(T1\)这不是水题吗,不对,肯定我想的有问题,代码源怎么可能这么简单呢?不管了写完过样例就是过了。

\(T2\),把概率拆出来之后就是个计数,优势在我。发现暴力 \(\Omicron(nm^2)\) 比较简单,但是有 \(50pts\) (一开始以为是 \(\Omicron(nm)\) 的),发现不会优化。想了一下,菊花是简单的。感觉会链的话就会正解了。想了很久还是不会,于是躺在躺椅上冥想,然后就莫名睡着了

睡了一小会突然惊醒了,赶紧把 \(50pts\) 写了,感觉还有不少的细节,多多少少调试了一小会。看了一眼 \(T3T4\),感觉直接被创飞了。

\(T3\) 看完感觉非常神秘,猜测或许会用到有关于查询随机的某某性质,于是放弃了去看 \(T4\)

\(T4\) 看完依旧感觉非常不传统,完全不会维护,非常沮丧,于是后面就摆烂了。

还忘记了拼上 \(T2\) 关于 菊花 的部分分。

最后得分:\(100+50+0+0 = 150\)

看题解。

\(T2\) \(m\gt n\) 的时候一定会有一些新开的洞里面是没有球球的,换言之有意义的洞只有 \(\Omicron(n)\) 个。于是改状态为 \(f_{i,j}\) 表示以 \(i\) 为根的子树内,新开了 \(j\) 个有球球的洞的概率。最后只需要乘上组合数就好了,复杂度 \(\Omicron(n^2+m)\)。欸,我怎么连这都想不到。

\(T3\) 有一个重要的结论,选出的若干种数字的答案,一定是这若干种两两组合的答案的 \(gcd\),感性理解一下非常正确啊。于是这时就有了 \(\Omicron(Q(k^2+\log n))\)\(50\) 分做法。剩下的部分就是将序列分块,每一块内维护块内所有 \(mask\) 的答案,然后每次查询的时候块间合并一下,极度卡常。

\(T4\) 发现如果将计算的过程做成若干个区间,那么终点区间外面的点的边的方向是确定的,若分块,则可以预处理一个点走到一个块内的步数和位置,然后在块内 \(\Omicron(\sqrt n)\) 的做一下,复杂度 \(\Omicron((n+Q)\sqrt n)\)。既然和区间相关,就可以改分块为分治,每一层都算一个区间走到另一个区间的信息,然后往下递归,可以做到 \(\Omicron((n+Q)\log n)\),空间复杂度 \(\Omicron(n \log n)\)

总结:

  • 非套路的东西还是得自己多钻研。
  • 以后比赛还是遏制摆烂,多写暴力吧。

DAY 5

具体时间记不清了。

8:00 ~ 8:20 先把题都看一遍再说,感觉 \(T1\) 像个什么推完式子之后二维数点,\(T2\) 一眼非常可做,\(T3\ T4\) 看了一眼,感觉属于正常范畴吧。

8:20 ~ 9:00 欸不是,我咋不会 \(T1\)

9:00 ~ 9:30 继续死磕 \(T1\),意识到可能这题已经涉及到我的知识盲区了,不然也不会卡我这么久,于是弃掉往后看。

9:30 ~ 9:40 这 \(T2\) 不是模拟题吗。

9:40 ~ 12:00 一直写写写,调调调,真的就做了两个多小时,不过好在最后十分钟过掉了所有的样例,优势在我

最后得分:\(0+65+0+0=65\) 招笑。

\(T2\) 少赋了 anc[1] 的初值,最后一个包被卡了。

看题解。

然后 \(T1\) 是 曼哈顿距离 转 切比雪夫距离。转完之后非常显然。这个东西确实非常不熟悉。

\(T2\) 写的是正解。

\(T3\) 感觉比较套路,之前做过一个类似的 CF 的简单题,看来还是得练套路。

\(T4\) 也非常套路,前两天的 CF 的 E2 在场上差一点写出来,这套路记忆犹新。

总结:

  • 这场题目不那么逆天,但是打的确实很烂。
  • 总觉得写完前面的题目就没有时间仔细思考 \(T3\ T4\),是否应该变更训练的策略呢?(蒟蒻发问)

DAY 6

8:00 ~ 8:10 把题大概看了一遍,感觉 \(T2\) 有点难,\(T3\) 大概不会,\(T4\) 计数。

8:10 ~ 8:15 \(T1\) 是简单题,很快就会了。

8:15 ~ 8:35 过了 \(T1\)

8:35 ~ 9:20 一直绕不过来中间的弯,总觉得博弈哪里怪怪的。然后突然明白了。

9:20 ~ 9:40 写了 \(\Omicron(n^2)\) 的暴力,\(50pts\)。并且发现转移式与组合数相同。

9:40 ~ 10:00 推了推式子,发现确实可以按照格路计数的方法把贡献拆到 \(\Omicron(m)\) 个点上然后系数是组合数。

10:00 ~ 10:30 写完了,还调了一会,\(T2\) 就过了。当时还挺开心的。

10:30 ~ 10:35 看了一小会 \(T3\),感觉还是不如去看计数。

10:35 ~ 11:00 推了推式子并且化简,发现好像会超小常数的 \(\Omicron(n^5)\),感觉可能能过 \(65\)

11:00 ~ 11:20 写了但是挂了。

11:20 ~ 11:30 只能写一下暴力的 \(\Omicron(n^7)\) 先保一下 \(30\) 了。然后 \(\Omicron(n^7)\) 竟然没过???

11:30 ~ 12:00 写了好久发现了问题,竟然是需要让 \(\binom{-1}{-1}=1\) ??特判一下过了样例,交了上去,希望能拿点分。

最后得分:\(100+100+0+0=200\)

\(T2\) 怎么过了 \(6\) 页人。看来 \(T4\) 的计数方式多少还是有问题。被创飞了。

看题解 (dmy 真是越来越懒了)

\(T3\) 神秘推性质,转化成图之后取反图,然后分析菊花的性质,把生成树剖分成若干 \(siz\ge 2\) 的菊花,妙。

\(T4\),其实我还没订 \(T4\)

总结:

  • 博弈之类的有点拉了,而且套路的推组合数我也推了挺长时间,别人眼里的简单题我得做好久。
  • 不应该不去思考性质题。
  • 打暴力还是打一些比较稳的分数吧。

DAY 7

8:00 ~ 8:05 看了 \(T1\),咋感觉没啥思路呢。

8:05 ~ 8:20 考虑暴力跑出一个环,这个环可作为 \(p_{(1)}\),猜测除了一些 \(gcd(n,k)=1\) 的环,剩下的都在一个环上。

8:20 ~ 8:30 发现加菲了。

8:30 ~ 9:00 没有思路 & 看后面的题。

9:00 ~ 9:30 突然发现很唐,好像是确定了一个环的元素个数 \(x\) 之后,就可以发现有大概 \(\Omicron(\sqrt k)\) 个环个数 \(p\) 可以拼成一个环,当且仅当\(p|k\and gcd(x,{k \over p})=1\),显然整个图上元素个数不同的环的种类只有 \(\Omicron(\sqrt n)\) 个。这样的话是不是跑一遍 dp 然后倒着构造一下方案就行了。但是感觉好难写啊。

9:30 ~ 9:40 不管了,好歹能过题了,赶快开写。不过比较好运的是刚写到 dp 的部分,就发现 \(P=\{p\}\) 中的任意两个元素之间一定存在倍数关系,这样我显然不如直接全都做成最小的环。发现好写很多了。

9:40 ~ 10:10 还是很慌的,有个细节写了好几次都写错了,不过还好调出来之后就过了。并且还和样例的答案是一样的,感觉稳了。

10:10 ~ 10:25 略微想了一会 \(T2\),感觉一眼 树形 dp 啊,并且 \(\Omicron(n^3)\) 非常之一眼。

10:25 ~ 10:55 又磨蹭了一会,尝试观察这 dp 能不能优化,发现非常之没有前途。

10:55 ~ 11:30 写了一下,中间还调了一段时间,调过了长度为 \(2\) 的链就过了全部样例()

11:30 ~ 11:40 惊奇的发现数组的转移之间第二维和第三维的和是一样才有用的!形似非常像一个卷积,于是推了一下式子(但没推完)猜测这玩意肯定前缀和优化就结束了。

11:40 ~ 11:50 确实结束了,因为过不了样例了。发现有个地方需要求乘上不同的系数,好像不能这样优化了,但是这样的位置只有 \(\Omicron(1)\) 个,于是我震惊的发现:如果直接枚举这个位置为从叶子至根方向第一次为不合法的黑边,这个方案数好像能直接算出来?

11:50 ~ 11:55 打了个补丁,还是不过,发现可能真的不是卷积,并且好像还算重了,遂摆烂。

最后得分:\(100+40+0+0=140\)

不是 \(T1\) 怎么一车人直接秒了。

看题解:

\(T1\) 确实正解。

\(T2\) 有点招笑,一眼树形 dp 的题,最后正解是推式子(

不过还是挺简单的。

\(T3\) 那我还是太不擅长 概率 和 期望 了。标程就是一直推推推推式子,然后就 \(\Omicron(k)\) 了,感觉不难理解。但是为啥自己就总是想不出来。不过递推的方法还是要去学习一下,感觉拓展性更强。

\(T4\) 大概看懂了题解,还没订。

总结:

  • 不要看见树上计数并且有很多限制就想 树形 dp 了,有的时候限制多更方便 直接计数 呀。
  • 不是哥们把把 rk 40+,看来我就这水平了。

DAY 8

你说得对,但是 \(15pts\)

DAY 9

你说得对,但是 rk 60+

DAY 10

8:00 ~ 8:40 看完了 \(T1\),感觉比较可做。遂开始想,一开始尝试使用一些数据结构维护过程,然后直接把答案贡献到每一个 \(k\) 上,最后直接输出就好了。但是显然没有对应的数据结构捏。

8:40 ~ 9:00 尝试无果之后发现操作过程中的状态数非常之多,而且没有什么规律,显然不能快速维护。那感觉这题一定是什么 根号分治 + 压位,只要我能做到 \(\Omicron(1)\) 转移长度为 \(k\) 的区间的状态,那么就大概可以在 \(\Omicron(n\sqrt n)\) 时间内解决。

9:00 ~ 9:20 那感觉这题不是直接结束了,遂开始写。写了一半发现我咋不回 \(\Omicron(1)\) 转移???

9:20 ~ 9:30 发现了恐怖的事情,第一个是仔细看了复杂度好像是 \(\Omicron(n\sqrt n \log n)\),就算是真的写出来 \(\Omicron(1)\) 转移是不是也过不了。第二个是发现好像真的不会转移,因为直接维护 0 / 1 的位置,就需要一种位运算满足:\(1\oplus 0 = 0, 0\oplus 1 = 1\) 显然不合理。

9:30 ~ 10:00 感觉很难受,一直在回顾走到这一步的过程到底哪里走偏了,但是感觉每一步都没有什么问题,可是就是没有办法继续走下去,写了个暴力丢在那了。

10:00 ~ 10:10 看 \(T2\),喜出望外,这不是简单题。

10:10 ~ 10:20 高兴不起来了,加菲了。

10:20 ~ 11:00 一开始假掉的原因好像是发现如果每次转移只加入一个点然后与原先点集的边方向随意定就会算重,但是如果方向确定就无法计算环。感觉枚举中间两个点都走不到的点比较有前途,于是开始想,发现会有一些枚举的点集被另一个更大的极大不可达点集包含,于是需要容斥,但不知道对不对,而且 byd 我 T1 还没过呢,所以根本静不下来去想。

11:00 ~ 12:00 喜闻乐见的垃圾时间,都浪费在回去看 \(T1\) 上了。

看题解:

\(T1\) 还真是类似 分块 + 压位,但是转移直接拿两个位运算合并一下就好了!糖丸了。/fn

\(T2\) 还真是容斥,但是算的是和 \(1/2\) 联通的极大点集方案数,然后 \(\Omicron(3^n)\) 即可计算,不算很难。可是我咋又不会。

\(T3\) 感觉 树形 dp 非常厉害,前面的 dp 会了的话,后面的似乎就比较容易。

\(T4\) 回头再订。

总结:

  • 打的一坨。
  • 之后要认真打暴力了。
  • 要注意细节的实现,不要总是被套路困住从而找不到切入点。

DAY 11

我是鸽子谢谢喵,咕咕,嘎嘎嘎,叽叽喳喳。

DAY 12

一直在想 \(T1\) 啊,感觉没啥好写的比赛过程,最后还没做出来。。。

Day 13

回归代码源。不过依旧啥也不会。

\(T1\),看了一会,感觉不会,跳了先。

\(T2\),发现贪心之后简单线段树。会了会了,写完就过了 。

看了眼 \(T3/T4\) 感觉都只会暴力,就又去思考 \(T1\)。推了很多的等价条件 / 式子,但是都没啥用处感觉。

一直想到了比赛结束。

得分:\(10+100+0+0=110\)

看题解:

\(T1\) 推了很久的式子,中间想到过类似可以去枚举当前数 \(x\) 的因子,然后根据系数去计算这个数字的答案,但是发现复杂度爆炸而且计算困难遂放弃。但是其实把式子再推一推的话,应该就能发现是对 \(ab+1|n,b\neq 1\) 计数了。复杂度的话因为是三项乘积所以枚举最小值分析出来并没有那么大。

\(T2\) 本场简单题。

\(T3\) 根据我们 康托展开,发现一个排列 \(P\)\(rk(P)=\sum\limits_{i<j}[p_i\gt p_j](n-i)!\) ,这样子就把贡献拆开了。简单想一下非常有道理。于是发现对于只有两个位置,不一样的状态只有 \(\Omicron(n^2)\) 种,最后的图变成了若干个长度 \(\le n\) 的环,然后计算贡献就可以求类似前缀和的东西就好了。实现需要精细一些,复杂度大概 \(\Omicron(n^2+n|m|)\)

\(T4\) 有点不是很明白了。

总结:

  • 书面上的推式子还是很重要的,不然可能会丢失一些关键性质。
  • 难维护的的东西真的要想到去思考怎么拆贡献。

DAY ??? (10.03)

学校模拟赛。

\(T1\),不是这啥玩意 \(4e6\) 不能带 \(\log\) 吧。。。想了一会还是写了带 \(\log\) 的,跑了两秒,不管先扔了。红温(1/15)

\(T2\)感觉挺好做的啊。发现需要维护:直径,除了直径之外的最长链。只需要证明一下有多条直径的时候也不会影响答案就可以了,然后发现竟然是假的???那感觉这个思路不可做了呀,非常无法维护。红温(3/15)

没事再想想,发现一种方案等价于三点 \((a,b,c)\) 两两之间的距离和。该上数据结构咯。想了一会发现我还是不会维护这个东西。红温(5/15)

继续思考,发现已经走投无路了,真的是不知道除了这思路还有啥别的思路了。弃了吧,去看 \(T3\)

想了一下场上的局势,手里只有 \(T1\)\(100pts\)。红温(6/15)

\(T3\) 非常有思路,想了一会,好像直接按照 \(B=\sqrt n\) 就有大概 \(40pts\)。继续思考更少的 \(2\) 操作策略。发现不会。然后就一直死磕,想了很久很久,本来有个思路感觉非常对,写了一小会之后就又假了。并且发现这个时候距离比赛结束只剩下 40min。红温(10/15)

回头看看有啥分,发现 \(T2\)\(75pts\)。赶快开始写,发现写起来好困难,写得非常之仓促,最后没有调出来。红温(15/15)

倒闭。得分:\(100+0+0+0=100\)

\(T1\) 其实开了 \(O2\) 之后跑的飞快。题解的话不想写了。

DAY ??? (XMYZ)

学校模拟赛。

8:00 到机房,9:00 才开始打。

看一眼 \(T1\),诶呀这不是区间筛嘛。区间长度过长筛不了并且多测。想了一下素数的分布大概是 \(\pi(n)={n\over\ln n}\),算一下发现 \(l\ge 10^6\) 的时候没有,肯定无解,否则筛一下预处理就好了,总共大概用了 \(\lt 20\min\)

\(T2\),诶呀这不是分治随便做嘛。不过还好多想了一下,其实直接枚举 \(mex\),然后贪心找一下最长的区间算一下贡献就好了。总共大概用了 \(\lt 20\min\)

\(T3\),最开始发现对于连续的一段 \(0/1\),有一定的方法把他们配对之后删除,随后递归处理,但是很难写。再想一下发现明明可以直接一位一位的递归,于是就变成了一个 trie 上的 dp。然后开始写了,发现思路非常不清晰,一直写到比赛结束都没有调出来。

得分:\(100+100+0+0=200\)

赛后又调了不短的时间 \(T3\) 才终于 AC,码力这一块还得提高。

于是来看 \(T4\) 正解,naive 的暴力 dp 就是直接记录上传的数值是多少。发现这样的话 dp 状态是 \(\Omicron(nk^n)\) 的。发现最后的每一种方案都一一对应了一种操作序列,具体来讲就是把数值看成若干物品,每次在一个点上肯定是往父亲方向扔出若干个物品,于是钦定就是前 \(i\) 个于是发现可以只维护分界点。每个点上最多只会决策一个分界点,于是分界点 \(\Omicron(n)\),每次加入一个点时候提前钦定好会不会在之后作为分界点,分步转移一下背包就好。非常好的题目,结合了两种经典套路:

  • 答案与操作序列之间的映射。
  • 把上传若干标记转化为定序之后的前缀标记,于是 \(\Omicron(n)\rightarrow \Omicron(1)\)

总结:

  • 理清思路再动手写题,不然写多久都是无用功。
  • 我要是 8:00 开始打绝对能过 T3。

DAY ??? (JSY)

学校模拟赛。

\(T1\),发现肯定取一个 gcd,然后把序列划分为模 gcd 意义下的若干环,每个环上必须有偶数个需要修改的位置。如果一个环和多个环匹配怎么办?不会了... 想了很久发现一个环仅会和另一个环匹配。。。于是很快写完。竟然已经过了 \(50\min\) 太浪费时间了。

\(T2\),简单计数,写完直接过。差不多还剩下 \(2h\)?可能还多一些时间吧,记不清了。

\(T3\),第一眼觉得得分治,但是没啥思路。去机房外继续思考。还挺冷的。继续想了想发现三个连在一起的情况简单啊,如果不是这样的话好像就又不会了。没啥思路了回来看眼题,发现特殊性质竟然和三个连在一起的情况有关系?证明一下发现如果没有连在一起的话,那么这个数字一定存在作为区间端点存在的情况,于是会了 \(80\),但是写了比较好写的 \(60\),之后转化一下等价条件,从小到大枚举数字,线段树维护之可以 \(\Omicron(n\log n)\)。写完看眼小样例,全部通过,大样例呢,竟然挂了,开始调,调到快结束的时候发现等价条件改到暴力上都不对???慌了,但是不知道问题在哪,倒闭。

哦对了,中间看了眼 \(T4\)(大概是在莽 \(T3\) 正解前),发现好像可以把 dfn 相邻的先合并,差不多是 \(\Omicron(n^2\log n)\)(不过赛后发现是假的,不过差得不太多)。

估分:\(100+100+60=260\)

得分:\(30+100+60=190\)

wtf? 哦原来我 \(T1\) 少个特判,改完就过了。

\(T3\) 更是()的没边了,判断三个连在一起的情况用的乘法爆了 int,所以大样例没过。。。嗯调了一个多小时。

看题解:\(T4\) 发现其实应该是贪心的从子树合并上来使得路径不交,于是等价转化一下发现一个边贡献的充要条件(不展开了),线段树合并维护之即可。

总结:

  • 太粗心了。太粗心了。太粗心了。太粗心了。太粗心了。太粗心了。太粗心了。太粗心了。太粗心了。太粗心了。太粗心了。
  • 以后把这种低级错误写成文字到缺省源里提醒自己。

DAY ??? (10.07)

学校模拟赛

\(T1\) 看了一会,会了,写完就过了。

\(T2\) 小模拟。看了一会,感觉会了,写了,写完发现好像有点问题,并且不好修复,先扔了去写 \(T3\)

\(T3\) 想了一小会,发现对于一个确定的人的集合,肯定贪心的去选 \(x\) 小的用,发现肯定是按照 \(x\) 从小到大排序后,一个前缀只用 \(x\),一个后缀只用 \(c\),中间只有一个位置两种都用。于是 \(\Omicron(n^3)\rightarrow \Omicron(n^2)\) 写完就过了。

回来写 \(T2\),理清了思路写完调了一小会就过了。比赛差不多也就结束了。

得分:\(100+100+100+0=300\)

这场题比较简单。

看题解:\(T4\) 发现每个机器人每秒都往后移动这件事难以维护,于是变化参考系,让机器人的位置是固定的就好做了。状压 dp 即可做到 \(\Omicron(R2^R\log n)\)

总结:

  • 不要着急,遇到 难写的 / 思路不清晰的 先跳过之后感觉清晰了再来写。
  • 不会 T4 感觉是因为没时间。
posted @ 2025-09-02 20:49  Hthntd  阅读(68)  评论(3)    收藏  举报