ARC128D
shiruoyu114514 · · 题解
结论题。
题意是问有多少种保留位置合法,于是想到令
现在的重头戏就是探寻
显然 1010101 串,你找不出来一种方案。事实上,除了 101 字符串删中间就完了之后,一切恰好由两种字符串组成的串都是 1010101010 型,删掉一个位置之后就会出现相同相邻,无解。
但是这是充要条件吗?
断言:当有至少
3 种字符时,一定有解。证明:考虑随便选择一个
i 使得a_{i-1},a_i,a_{i+1} 互不相等。如果a_i 只有一个数的话,直接不断删左邻居(一定合法,因为如果左邻居与左左邻居相等,那么违反“相邻数不等”。由于a_i 唯一,所以a_i 一定不等于左邻居)然后不断删右邻居,最后一定为101,直接删中间即可。否则删除
a_i 即可转化为序列长度-1 的子问题。(不需要专门注意单一颜色,把其削到1 次之后再转化为前述情况)。
观察到如果 101 单独处理即可。双指针即可处理出
时间复杂度