专栏文章

ARC128D

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

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mipar8fb
此快照首次捕获于
2025/12/03 08:56
3 个月前
此快照最后确认于
2025/12/03 08:56
3 个月前
查看原文
结论题。
题意是问有多少种保留位置合法,于是想到令 dpidp_i 为以 ii 作为最后一个保留位置的方案数,则转移方程形如 dpi=dpjable(i,j)dp_i = \sum dp_j\text{able}(i,j),其中 able(i,j)\text{able}(i,j) 为对于 a[i:j]a[i:j],仅保留 ai,aja_i,a_j 是否合法。
现在的重头戏就是探寻 able(i,j)\text{able}(i,j) 的性质。
显然 j=i+1j=i+1 时一定有解。除此之外当存在两个连续相等字母时无解。但是这是充要条件吗?可以轻易地想到 1010101 串,你找不出来一种方案。事实上,除了 101 字符串删中间就完了之后,一切恰好由两种字符串组成的串都是 1010101010 型,删掉一个位置之后就会出现相同相邻,无解。
但是这是充要条件吗?
断言:当有至少 33 种字符时,一定有解。
证明:考虑随便选择一个 ii 使得 ai1,ai,ai+1a_{i-1},a_i,a_{i+1} 互不相等。如果 aia_i 只有一个数的话,直接不断删左邻居(一定合法,因为如果左邻居与左左邻居相等,那么违反“相邻数不等”。由于 aia_i 唯一,所以 aia_i 一定不等于左邻居)然后不断删右邻居,最后一定为 101,直接删中间即可。
否则删除 aia_i 即可转化为序列长度 1-1 的子问题。(不需要专门注意单一颜色,把其削到 11 次之后再转化为前述情况)。
观察到如果 [j,i][j,i] 违背“相邻不等,那么 [j1,i][j-1,i] 违背相邻不等。如果 [j,i][j,i] 种类数至少为 33,那么 [j1,i][j-1,i] 种类数至少为 33。所以满足相邻不等,并且种类数至少为 33jj 是一个区间,可以前缀和区间求和。对于 j1j-1 以及 j2j-2 带来的 101 单独处理即可。双指针即可处理出 jj 所在的区间。前缀和即可。
时间复杂度 O(n)O(n)

评论

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

正在加载评论...