又是一个逐步简化的模型,好烦了又不会做这种题了呜啊呜啊。
首先相邻且相同的字符,我们可以缩在一起。
不妨假设 \(c_a\leq c_b\leq c_c\),我们考虑逐步删除来达到三个字符相同的情况。
按照 \(A\) 将整个字符串划分成若干段,每一段一定形如 \(BC\) 交错的情形。
注意到中间字符串长度大于等于 \(3\) 时删除 \(BC\) 原串仍然满足相邻字符不相同这个性质,猜测 \(c_b=c_c\) 时可以取到上界。
证明:若一直删除 \(BC\),最后两个 \(A\) 之间至多两个字符,两边至多一个字符,那么 \(c_b+c_c\leq 2(c_a-1)+2=2c_a\),而一开始 \(c_b+c_c\geq 2c_a\),那么删除过程中一定会满足 \(c_b+c_c=2c_a\)。
那么我们现在的目标就是保证 \(c_a\) 尽量大的情况下使得 \(c_b=c_c\),首先如果说可以单独删除一个 \(C\) 一定会删除的,当两个 \(A\) 之间的字符串长度大于等于 \(2\) 的时候就可以将两边的 \(C\) 字符删掉。
如果还是不行的话,那么单个 \(C\) 的段一定比 \(B\) 的段多,我们一直删除 \(AC/CA\) 即可。
标签:字符,ABC,String,删除,BC,AGC036E,leq,2c,字符串 From: https://www.cnblogs.com/xcyyyyyy/p/18352090