题解:CF2276B Replace and Compress

· · 题解

题目大意

给你一个 01 字符串,有两步操作:

  1. 反转 2 到 n-1 中至多一个字符,也就是说可以不转也可以转一个字符。
  2. 对字符串进行压缩,将一段连续的字符串压缩为其相应的字符。

问压缩完有多少种不同的字符串。

解题思路

可以分为三种情况:

  1. 不进行反转。
  2. 如果 s_{i-1} 与 s_{i+1} 相等且不与 s_{i} 相同,反转 s_{i} 后这三个会合并在一起,就会出现一种新的情况。
  3. 如果 s_{i-1} 与 s_{i} 与 s_{i+1},反转 s_{i} 后,s_{i-1} 与 s_{i}相等,不与 s_{i} 相等,则会出现一种新情况。

所以最后判断能否有后两种情况即可。