atcoder#ARC156A. [ARC156A] Non-Adjacent Flip

[ARC156A] Non-Adjacent Flip

配点 : 400400

問題文

11 から NN の番号がついた、表裏が区別できるコインが NN 枚あります。コインの表裏は長さ NN の文字列 SS で表され、SSii 番目の文字が 1 のときコイン ii は表を向いており、0 のときコイン ii は裏を向いています。

あなたは、以下の操作を 00 回以上好きな回数繰り返すことができます。

  • 1i<jN1\leq i < j\leq N かつ ji2j-i\geq \bm{2} を満たす整数組 (i,j)(i,j) を選ぶ。コイン ii とコイン jj を裏返す。

操作によって NN 枚のコイン全てを裏向きにできるか判定し、可能な場合必要な操作の回数の最小値を求めてください。

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

制約

  • 1T2×1051 \leq T \leq 2\times 10^5
  • 3N2×1053 \leq N \leq 2\times 10^5
  • SS0, 1 からなる長さ NN の文字列
  • 入力される数値は全て整数
  • 11 つの入力に含まれるテストケースについて、NN の総和は 2×1052\times 10^5 以下

入力

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

TT

case1\mathrm{case}_1

\vdots

caseT\mathrm{case}_T

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

NN

SS

出力

TT 行出力せよ。i (1iT)i\ (1\leq i \leq T) 行目には、 ii 番目のテストケースについて、操作によりコインを全て裏向きにできる場合は必要な操作回数の最小値を、できない場合は -1 を出力せよ。

5
3
101
6
101101
5
11111
6
000000
30
111011100110101100101000000111
1
2
-1
0
8

11 番目のテストケースについては、(i,j)=(1,3)(i,j)=(1,3) として操作を 11 回行うと、11 回の操作でコインを全て裏向きにできます。

22 番目のテストケースについては、(i,j)=(1,3)(i,j)=(1,3) として操作を 11 回行い、(i,j)=(4,6)(i,j)=(4,6) として操作を 11 回行うと、22 回の操作でコインを全て裏向きにできます。

33 番目のテストケースについては、コインを全て裏向きにできないことが証明できるので、-1 を出力してください。

44 番目のテストケースについては、コインは既に全て裏向きなので、操作は必要ありません。