#ATagc022e. [AGC022E] Median Replace

[AGC022E] Median Replace

题目描述

太一认为,由 0011 组成的奇数长度 NN 的字符串 XX,如果满足以下条件,则是美丽的。条件如下:可以进行 N12\frac{N-1}{2} 次如下操作,使得最终字符串唯一的字符为 11

  • 选择 XX连续的 33 个比特,并用它们的中位数替换这三个比特。例如,对 00110 的中间 33 个比特应用该操作后,字符串变为 010

太一有一个由 01? 组成的字符串。他想知道,将每个 ? 替换为 01,能够得到美丽字符串的方法数。请输出该方法数对 109+710^{9}+7 取模的结果。

输入格式

输入从标准输入读取,格式如下:

SS

输出格式

输出将每个 ? 替换为 0011,能够得到美丽字符串的方法数,对 109+710^{9}+7 取模。

样例 1

输入

1??00

输出

2

样例 2

输入

?

输出

1

样例 3

输入

?0101???10???00?1???????????????0????????????1????0

输出

402589311

说明/提示

限制条件

  • 1S3000001 \leq |S| \leq 300000
  • S|S| 是奇数。
  • SS 的所有字符均为 01?

样例解释 1

? 替换为 01 的方法共有 44 种:

  • 11100:该字符串是美丽的。因为首先对最后 33 个比特应用操作,得到 110,再对整个字符串应用操作,得到 1
  • 11000:该字符串是美丽的。因为首先对最后 33 个比特应用操作,得到 110,再对整个字符串应用操作,得到 1
  • 10100:该字符串不是美丽的。因为不存在操作顺序能使最终字符串为 1
  • 10000:该字符串不是美丽的。因为不存在操作顺序能使最终字符串为 1

因此,可以得到美丽字符串的方法有 22 种。

样例解释 2

在这种情况下,只有 1 是唯一的美丽字符串。

样例解释 3

不要忘记输出答案对 109+710^{9}+7 取模。

由 ChatGPT 4.1 翻译