#R246H. [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
で割ったあまりを出力することに注意してください。