atcoder#ABC200F. [ABC200F] Minflip Summation

[ABC200F] Minflip Summation

题目描述

0, 1, ? のみからなる文字列 S S があります。この文字列を K K 個連結したものを T T とします。
この文字列の ? を全て 01 に置き換えた文字列は、S S の中に含まれる ? の数を q q 個とすると、全部で 2Kq 2^{Kq} 通り考えられますが、その全てについて以下の問題を解いて、その答えの和を (109+7) (10^9+7) で割った余りを求めてください。

? を置き換えた後の文字列を T T' とします。T T' に以下の操作を繰り返し行うことで全ての文字を同じにするとき、必要な最小の操作回数は何回ですか?

  • 1  l  r  T 1\ \le\ l\ \le\ r\ \le\ |T'| となる整数 l,r l,r を選ぶ。そして、T T' l l 文字目から r r 文字目(両端含む)までの各文字を、0 であれば 1 に、1 であれば 0 に変更する。

输入格式

入力は以下の形式で標準入力から与えられる。

S S K K

输出格式

答えを整数として出力せよ。

题目大意

给定一个仅含 01? 的字符串 SS 和一个参数 KK,将 SS 复制 KK 次得到字符串 TT
(即 T=SSS...ST=SSS...S,共 KKSS

你可以对 TT 进行若干次操作:每次选取一组 llrr,将 [l,r][l, r] 内所有 1 变为 0,所有 0 变为 1。求将 TT 中的所有字符变为同一种所需的最小操作次数。

特别地,字符 ? 代表此处还没有填上。? 处既可填 0 亦可填 1,但你需要将填 01 的方案都计入最后的贡献之中。
形式化地讲,若 SS 中有 qq 个字符为 ?,你需要计算所有 2Kq2^{Kq} 种可能的字符串各自所需要的最小操作数,并将它们的总和作为最终答案。
若仍不理解,可以参考样例2。

答案对 109+710^9+7 取模。

101
2
2
?0?
1
3
10111?10??1101??1?00?1?01??00010?0?1??
998244353
235562598

提示

制約

  • 1  S  105 1\ \le\ |S|\ \le\ 10^5
  • 1  K  109 1\ \le\ K\ \le\ 10^9

Sample Explanation 1

文字列 T= T= 101101 で、ここには ? が含まれません。よって、考えられる唯一の T= T'= 101101 についての答えを求めればよいです。 例えば、101101 \rightarrow 110011 \rightarrow 111111 と操作を行えば、 2 2 回で全ての文字列を同じにすることができます。 1 1 回以下の操作で全ての文字列を同じにすることはできません。

Sample Explanation 2

文字列 T T' として考えられるものは 000, 001, 100, 1014 4 通りです。

Sample Explanation 3

答えは非常に大きくなることがあるので、 (109+7) (10^9+7) で割った余りを求めてください。