• 原题链接: Problem - C - Codeforces
  • 题意

    • 给定一串二进制字符串,要求做如下操作(不超过三百次)
      • 对字符中任意位置插入 “01” 串
    • 使得字符称为对称位置字符不同的字符串 即
  • 思路

    • 模拟 不要每次一进来就像不要模拟题目要求的变化过程
      • 查找规律,发现只要是前串中的 0 数量与 1 数量分别与后串中的 1 数量与 0 数量相等,就有解
        • 因为每次插入 01 串,会使得一个0 或者一个 1 进到另一边,自己失去一个0或1,同时添上01,则证明此时自己这一边的串会加上1或0,对面加上相反的0或1,要实现两边对称不同,则操作后两边的01数量相反相等,所以操作前两边01数量要相同
        • 然后查找
          • 如果s[l] = s[r] = '0 为了不同,在r处插入”01”
          • 如果s[l] = s[r] = 1为了不同,在l处插入”01”
          • 模拟这个过程直到 l>=r 退出
  • 实现代码