专栏文章

CF2092F Andryusha and CCB 题解

CF2092F题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miprmysd
此快照首次捕获于
2025/12/03 16:49
3 个月前
此快照最后确认于
2025/12/03 16:49
3 个月前
查看原文
可能唯一难度是位置的题目。调和级数板题放 D 题一万个人能过。
设字符串为 z1z2znz_1z_2\cdots z_n,记 si=z1z2zis_i=z_1z_2\cdots z_i
考虑长度为 ii 的前缀 sis_i。假设划分为 kk 段,每段漂亮值为 rr。由于 k1k-1 的划分点可能是在相同/不同数字之间,因此前 ii 个数字中,相邻位置不同的对数应该在 [rk,rk+k1][rk,rk+k-1] 之间,换句话说,确定 kk 之后,可能成为答案的 rr 也随之确定了。
我们将所有满足 zizi1z_i\neq z_{i-1}ii 保存为数列 a1,a2,aca_1,a_2,\cdots a_c。枚举 r(r1)r(r\geq 1)k=1k=1 时,能贡献到的最短前缀显然是 sars_{a_r},最长前缀是 sar+11s_{a_{r+1}-1}
但是 k=2k=2 的时候怎么做呢?最长前缀是 sa2(r+1)1s_{a_{2(r+1)}-1} 是显然的。最短前缀考虑从 k=1k=1 的情况递推过来。第一段最少截断到 sars_{a_r},最多截断到 sar+11s_{a_{r+1}-1},因此:
  1. 如果 ar+1=ar+1a_{r+1}=a_r+1,在截断的时候 ar+1a_{r+1} 一定会被破坏掉,第二段想拥有 rr 的漂亮值,只能包括 ar+2,ar+3a2r+1a_{r+2},a_{r+3}\cdots a_{2r+1},最短前缀为 sa2r+1s_{a_{2r+1}}
  2. 如果 ar+1>ar+1a_{r+1}>a_r+1,在截断的时候 ar+1a_{r+1} 不一定会被破坏掉,第二段想拥有 rr 的漂亮值,可以包括 ar+1,ar+2a2ra_{r+1},a_{r+2}\cdots a_{2r},最短前缀为 sa2rs_{a_{2r}}
对于 kk 更大的情况可以依次类推下去,最多枚举到 k=crk=\lfloor \frac{c}{r}\rfloor 就足够了。每次在枚举在符合要求的前缀范围执行一次区间加即可维护答案(差分一下)。另外注意一下 r=0r=0 的情况还没算,随便怎么处理下都行。
有人可能会问了,如果不同的 rr 对应相同的 kk 贡献到了同一个前缀,那答案不就算重了?这不会成为问题,因为题解的开头已经证明了对于某个前缀,当 kk 确定时,rr 不可能有多解。

评论

0 条评论,欢迎与作者交流。

正在加载评论...