5月日志
26-5-2
嗯,对,我在烬区一发制导炸了接近 5000 分。()
26-5-3
Skipped.
26-5-4
To do.
Skipped.
26-5-5
To do.
Skipped.
26-5-6
To do.
Skipped.
26-5-7
To do.
Skipped.
DimStar’s Blog 进入大 To do 时代!
DimStar’s Blog 进入大 Skip 时代!
26-5-8
AtCoder ARC124 E,这题是 DP 后手动容斥。
注意到若所有人都传球,则该方案一定有重复,因为可以使每个人少传一个球,结果不变。
否则,则该传球方案对应的最终局面不重复,因为若要保持相同局面,只能是所有人都增加/减少传球,而这两种方式都不符合最少传球数为
所以至少有
算方案用了一点组合意义,将乘积转化为选一个球,有
转移如下(
后面那个东西的转移系数可以
由于环的问题,所以要枚举第一个人选的是自己的球还是传来的球(初状态
为什么初状态
?
因为此时不知道前一个球传来的球有多少个,所以只能放个不影响答案的
26-5-9
CF1942G,思路大致是对的,但是卡在计数的不重不漏上,本来是考虑最后一张特殊牌的位置来去重,但是这个东西只能
所以通过考虑第一次(显然最多有一次)抽牌数耗尽的位置去重。
直接枚举,方案数是好想的,还有就是如果
大模拟赛 CWCPC - 1,7 道大败而归,hyc 比我多做三道蓝题,蓝题都不会,大哭。
26-5-11
改题,把 CWCPC - 1 的三道蓝题改了。
分别是神秘斐波那契数列,神秘手写 bitset 优化枚举,神秘记忆化搜索。
26-5-12
上午改了 CWCPC - 1 的 D。
下午尝试做 L。
26-5-13
终于推完式子了写出 L 了。
26-5-14
改了 CWCPC - 1 的 E。
这题首先是将答案映射到不存在取模的情况下,然后在 DP 中利用各种各样的单调性,省去不必要的信息,压缩状态。
26-5-15
P3266。
神奇的题目,从 DP 变到反射容斥,神奇。
先从题目中发现一行的选法只有
转移规律是简单的,这样可以写出一个
代码是这样:
1 | nmf(j, 0, m) f[1][j] = 1; |
发现这个东西画到格子上,再对第二维加上第一维(即在坐标系上“搓”一下)。
代码写出来是这样:
1 | nmf(j, 0, m) f[1][j] = 1; |
可以发现此时转移基本上是直接加上左边和下面的 DP 值,这启发我们想到格路计数。
注意到答案事实上是
1 | nmf(j, 0, m) f[0][j] = 1; |
这玩意事实上就是朴素的双线限制格路计数,将第二维视为横坐标,则有限制
然后直接做即可。
26-5-16
模拟赛,问候乱序放题的组题人。
T1,一道线段树分治模板。
T2,紫色题目,有点 Ad-hoc 意味。
转化为移动
想象成在一个矩阵上移动点,
首先发现对于两个数组中的最值,有很好的性质。
有仅当
如果符合上面的条件,
所以此时只需要能够从
然后转化成两个子问题。
发现在子问题中同样可以通过上面的条件找最大行最小列,然后缩小子问题规模。
当起点在最大行最小列时就合法。
如果此时子问题内
处理一下
T3,先差分变成求前缀,再转化成二进制类似数位 DP 的东西,DP 代码如下。
1 | // pw[n] = pow(3, pow(2, n)) |
T4,先转树上子树修改为区间修改,有关取模的东西,只能很暴力的做,因此根号分治,还要分块处理区间修改,模数小时,散块直接做,整块修改挂在 unsigned 能卡常。
本场由于脑抽 T3 数组没开够从 80 变成 50,挂了 30。
26-5-18
改模拟赛和晚练。
我好菜。
26-5-19
改模拟赛。
26-5-20
AtCoder ABC288 H,神题。
主要是先通过异或性质将可重排序序列(
第一步式子,应该是好理解的,先将不可重序列排序,再乘上可能出现的重复对方案:
note:
第二步集合划分容斥很复杂,容斥用 DeepSeek 讲了一下。
https://chat.deepseek.com/share/r6xrgd3kvdlckq3c4o.
反正就是用这个容斥一下,对于容斥时钦定出来的每一个块,按照块大小是奇数还是偶数判断是否需要塞进数位 DP 里算,如果大小为偶数不需要算的话该块方案数直接是
设个 DP 状的容斥系数
枚举第一个元素所在块的大小
然后数位 DP 放个代码。
1 | LL w[202]; // w[i] 表示异或和为 x,长度为 i,值域为 [0,m] 的有序序列数,可以相同 |
然后就是
复习一下如何算
到此这题就做完了,两步转化,集合划分容斥,二进制数位 DP,数数推式子,神题吧。
26-5-21
CF1967E1。
限制条件比较多,但是发现,对于一个
这样不用考虑确定
设
注意到如果 飞上高天,于是之后的所有方案均合法,所以
26-5-22
UOJ 424,神秘题,发现这个题面中的“最大值的位置”“区间”之类词和笛卡尔树很有关系,发现事实上要问的就是可能的不相同的笛卡尔树个数,由于左叶子一定严格小于父亲,所以“左深度”不能超过
然后这东西显然可以 DP,就是
然后猎奇的就是这玩意可以理解为最大嵌套层数不超过
可以理解成这个括号序列
然后最大嵌套层数不超过
但是具体怎么做我忘了。 :)
26-5-23
组队 CPC,7 题 Rank 24 离场。
26-5-25
AtCoder AGC070 C。
题面就是普通反射容斥的样子。
将 Alice 赢作为向右
则题目限制就是不能碰到
设
考虑容斥。
发现
因为下图这种情况反射后出现了连续向一个方向走两次的情况,这种方案应被容斥掉但是如果直接减去

我们考虑每一种不合法情况被反射时的情况,显然反射前一步一定是“上”。
就是上面的“上 右”型,该情况的方案数是
,理解为反射点处下一步本来是停/右,我们强行插入一个“上”(右反射后是上,因此我们钦定在此处有一个“上”,将滚木(停/右)变为上(停/右))。 “上 若干个停 上”型,该情况的方案数是
,理解为我们在反射点处强行插入一个“停”(停上反射后是停右,因此我们钦定在此处有一个“停”,将反射后的右变为反射后的停右)。 “上 若干个停 右”型,该情况的方案数是
,理解为我们在反射点处强行插入一个“停上”(停右反射后是停上,因此我们钦定在此处有一个“停”和“上”,将反射后的滚木(停/右)变为反射后的停上(停/右))。
因此
考虑
将 A 分成连续块
把个相同的 A 分成若干个连续块(每个块内的 A 彼此相邻,但块之间由 C 或 B 隔开)。设块数为 ,则块内相邻 A 的对数为 。
令,即需要钦定插入 B 来分隔的相邻 A 的对数。
将个 A 分成 个非空块的方式数为 。 放置 C 和 A 块
将个相同的 C 排成一排,形成 个间隙。
从中选择个间隙,每个间隙放入一个 A 块。
选择间隙的方式数为。 插入 B
此时得到的序列长度为,其中相邻 A 的对数恰好为 。这些相邻 A 之间必须插入 B(钦定),每个位置恰好插一个 B。
整个序列共有个间隙(包括两端和字母之间),其中 个是强制插 B 的间隙,剩余可用间隙数为 。
还需要插入个 B,已强制插入 个,故还需插入 个 B。每个可行间隙最多放一个 B(否则 B 会相邻),因此从 个可行间隙中选 个的方式数为 。 对所有可能的
求和 的取值范围是 ( ,且 )。
总方案数为:
做完了。
26-5-26
上午道法与历史会考,下午做了 P7115。
分治,类似快速排序,将
如何将两种颜色分类是容易的,先移出一根上白 (值不大于
26-5-27
CF526F,分治,令
分治算跨过
由于保证
- 最大在左,最小在左,
,枚举 即可。 - 最大在左,最小在右,
,枚举 ,对 双指针+桶维护即可。 - 最大在右,最小在右,
,枚举 即可。 - 最大在右,最小在左,
,枚举 ,对 双指针+桶维护即可。
还有个 QOJ 21566,四维偏序,模板题甚至还写炸了一次,我好菜。
26-5-28
早上改了昨晚晚练,并成功的将一道五维偏序差分降到了四维,写出来发现又 WA 又 TLE,然后被 cdo 提醒发现其实还可以差分成二维偏序加区间加单点查,相当于三维偏序。
火锅好吃。
结果下午才写出来。
26-5-29
出去研学。
不有趣。
打 Gemmer。
26-5-30
P3380。
树套树模板,没有什么特别的,第一次写,用的是树状数组套权值树状数组。
内层权值树状数组因为树状数组不支持动态开点所以用 unordered_map 存以达到动态开点的效果。
核心操作就是区间求某个值的排名和求某个排名的值,求排名对应的值用倍增代替二分去掉一只
- 标题: 5月日志
- 作者: DimStar
- 创建于 : 2026-05-05 09:16:22
- 更新于 : 2026-06-13 20:15:55
- 链接: https://dimstar-zhang.github.io/2026/05/05/5月日志/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。