atcoder#ARC150A. [ARC150A] Continuous 1

[ARC150A] Continuous 1

题目描述

0, 1, ? のみからなる長さ N N の文字列 S=S1S2 SN S=S_1S_2\dots\ S_N が与えられます。

これから S S に含まれるすべての ?0, 1 のいずれかに置き換えることで、以下の条件がすべて満たされるようにしたいです。

  • S S 1 をちょうど K K 個含む。
  • K K 個の 1 は連続している。すなわち、ある i (1  i  NK+1) i\ (1\ \leq\ i\ \le\ N-K+1) があって、Si=Si+1==Si+K1= S_i=S_{i+1}=\dots=S_{i+K-1}= 1 が成り立つ。

条件を満たすような ? の置き換え方がちょうど 1 1 通りであるか判定してください。

T T 個のテストケースが与えられるので、それぞれについて答えを求めてください。

输入格式

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

T T case1 \mathrm{case}_1 \vdots caseT \mathrm{case}_T

各ケースは以下の形式で与えられます。

N N K K S S

输出格式

T T 行出力してください。i i 行目には i i 番目のテストケースについて、条件を満たすような ? の置き換え方がちょうど 1 1 通りである場合は Yes を、そうでない場合は No を出力してください。

题目大意

给你一个长度为 NN 的字符串 SS,仅含 01?,问你能不能通过把? 变成 01,有且仅有一种方案使得这个字符串有且仅有一段连续的 1,且长度为 KK

4
3 2
1??
4 2
?1?0
6 3
011?1?
10 5
00?1???10?
Yes
No
No
Yes

提示

制約

  • 1  T  105 1\ \leq\ T\ \leq\ 10^5
  • 1  K < N  3 × 105 1\ \leq\ K\ <\ N\ \leq\ 3\ \times\ 10^5
  • S S 0, 1, ? のみからなる長さ N N の文字列
  • 全テストケースに対する N N の総和は 3 × 105 3\ \times\ 10^5 以下

Sample Explanation 1

1 1 個目のテストケースについて、例えば S S 101 に変えることができますが、この場合は 1 が連続していないため、条件を満たしません。 S S が条件を満たすようにするには S S 110 に変えるしかありません。 2 2 個目のテストケースについて、 S S が条件を満たすようにするには S S 1100, または 0110 に変えればよく、条件を満たすような ? の置き換え方は 2 2 通りあります。 3 3 個目のテストケースについて、S S が条件を満たすよう ? を置き換える方法は存在しません。