atcoder#AGC016D. [AGC016D] XOR Replace

[AGC016D] XOR Replace

题目描述

長さ N N の数列 a = (a1, a2, ..., aN) a\ =\ (a_1,\ a_2,\ ...,\ a_N) があります。 ただし、各 ai a_i 0 0 以上の整数です。

すぬけ君は次の操作を繰り返し行うことができます。

  • a a のすべての要素の XOR を x x とする。 整数 i i (1 < = i < = N 1\ <\ =\ i\ <\ =\ N ) をひとつ選び、ai a_i x x に置き換える。

すぬけ君の目標は、a a を数列 b = (b1, b2, ..., bN) b\ =\ (b_1,\ b_2,\ ...,\ b_N) に一致させることです。 ただし、各 bi b_i 0 0 以上の整数です。

目標が達成可能か判定し、達成可能ならば必要な操作回数の最小値を求めてください。

输入格式

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

N N a1 a_1 a2 a_2 ... ... aN a_N b1 b_1 b2 b_2 ... ... bN b_N

输出格式

目標が達成可能ならば、必要な操作回数の最小値を出力せよ。 達成不可能ならば、代わりに -1 を出力せよ。

题目大意

题意:一个序列,一次操作可以将某个位置变成整个序列的异或和。 问最少几步到达目标序列。

3
0 1 2
3 1 0
2
3
0 1 2
0 1 2
0
2
1 1
0 0
-1
4
0 1 2 3
1 0 3 2
5

提示

制約

  • 2 < = N < = 105 2\ <\ =\ N\ <\ =\ 10^5
  • ai a_i , bi b_i は整数である。
  • 0 < = ai, bi < 230 0\ <\ =\ a_i,\ b_i\ <\ 2^{30}

Sample Explanation 1

最初、a a のすべての要素の XOR は 3 3 です。 a1 a_1 を選んで 3 3 に置き換えると、a = (3, 1, 2) a\ =\ (3,\ 1,\ 2) となります。 次に、a a のすべての要素の XOR は 0 0 です。 a3 a_3 を選んで 0 0 に置き換えると、a = (3, 1, 0) a\ =\ (3,\ 1,\ 0) となり、b b に一致します。