atcoder#AGC045A. [AGC045A] Xor Battle

[AGC045A] Xor Battle

配点 : 400400

問題文

22 人の人がおり,0011 の番号がついています. また,00 で初期化された変数 xx があります. これから 22 人はゲームを行います. ゲームは NN ラウンドからなり,ii 回目 (1iN1 \leq i \leq N) のラウンドでは,次の操作が行われます.

  • SiS_i が以下のいずれかの操作をする.- xxxAix \oplus A_i で置き換える.ただしここで \oplus はbitごとの排他的論理和を表す.
    • 何もしない.
  • xxxAix \oplus A_i で置き換える.ただしここで \oplus はbitごとの排他的論理和を表す.
  • 何もしない.

00 の目標は,最終的に x=0x=0 にすることで,逆に人 11 の目標は,最終的に x0x \neq 0 にすることです.

22 人が最適に行動する時,最終的に xx00 になるかどうかを判定してください.

11 つの入力につき,TT 個のテストケースに答えてください.

制約

  • 1T1001 \leq T \leq 100
  • 1N2001 \leq N \leq 200
  • 1Ai10181 \leq A_i \leq 10^{18}
  • SS01 のみからなる長さ NN の文字列
  • 入力される数は全て整数である.

入力

入力は以下の形式で標準入力から与えられる. 入力の 11 行目は以下のとおりである.

TT

そして,TT 個のテストケースが続く. これらはそれぞれ以下の形式で与えられる.

NN

A1A_1 A2A_2 \cdots ANA_N

SS

出力

各テストケースについて,最終的に x=0x=0 となる場合は 0,そうでない場合は 1 と出力せよ. 各テストケースごとに改行せよ.

3
2
1 2
10
2
1 1
10
6
2 3 4 5 6 7
111000
1
0
0

11 つ目のテストケースでは,人 11xx01=10 \oplus 1=1 で置き換えると,人 00 の操作に依らず,最終的に x0x \neq 0 になります.

22 つ目のテストケースでは,人 11 がどちらの操作を行っても,人 00 が適切な操作をすれば x=0x=0 にできます.