atcoder#ABC246H. [ABC246Ex] 01? Queries
[ABC246Ex] 01? Queries
题目描述
0
、1
、?
のみからなる長さ の文字列 が与えられます。
また、 個のクエリ が与えられます。
ここで、 について、 は を満たす整数であり、 は 0
、1
、?
のうちのいずれかの文字です。
の順に、クエリ に関して以下の処理を行ってください。
- まず、 の先頭から 文字目を に変更する。
- その後、「 に含まれるすべての
?
をそれぞれ独立に0
または1
に置き換えて得られる文字列の(連続とは限らない)部分列」としてあり得る空でない文字列の個数を、 で割ったあまりを出力する。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
行出力せよ。 について、 行目には 番目のクエリ に対する答え(すなわち、問題文中の処理 2. における文字列の個数を で割ったあまり)を出力せよ。
题目大意
给定长度为 的仅包含 0
,1
,?
的字符串 ,给定 组询问 ,每次将原字符串中 位置的字符改为 ,然后输出 有多少种非空子序列,?
需任意替换为 0
或 1
。
。
3 3
100
2 1
2 ?
3 ?
5
7
10
40 10
011?0??001??10?0??0?0?1?11?1?00?11??0?01
5 0
2 ?
30 ?
7 1
11 1
3 1
25 1
40 0
12 1
18 1
746884092
532460539
299568633
541985786
217532539
217532539
217532539
573323772
483176957
236273405
提示
制約
- は整数
- は
0
、1
、?
のみからなる長さ の文字列 - は
0
、1
、?
のうちいずれかの文字
Sample Explanation 1
- 個目のクエリで、まず 110
に変更されます。 110
の部分列としてあり得る文字列は、0
、1
、10
、11
、110
の 個です。よって、 個目のクエリに対する答えとして を出力します。 - 個目のクエリで、まず 1?0
に変更されます。 1?0
の ?
を 0
または 1
に置き換えて得られる文字列は、100
と 110
の つです。 これらのどちらかの部分列としてあり得る文字列は、0
、1
、00
、10
、11
、100
、110
の 個です。よって、 個目のクエリに対する答えとして を出力します。 - 個目のクエリで、まず 1??
に変更されます。 1??
の ?
を 0
または 1
に置き換えて得られる文字列は、100
、 101
、 110
、 111
の つです。 これらのいずれかの部分列としてあり得る文字列は、0
、1
、00
、01
、10
、11
、100
、101
、110
、111
の 個です。よって、 個目のクエリに対する答えとして を出力します。
Sample Explanation 2
で割ったあまりを出力することに注意してください。