atcoder#ARC152E. [ARC152E] Xor Annihilation

[ARC152E] Xor Annihilation

题目描述

数直線上の x=1,2,3,...,2N1 x=1,2,3,...,2^N-1 の位置に 2N1 2^N-1 個のボールが並んでおり、x=i x=i にあるボールは wi w_i の重みを持っています。ただし、w1, w2,...,w2N1 w_1,\ w_2,...,w_{2^N-1} 1 1 から 2N1 2^N-1 までの整数を並び替えた数列です。 さらに、あなたは 2N1 2^N-1 以下の負でない整数 Z Z 1 1 つ選び、座標 x=± 100100100 x=\pm\ 100^{100^{100}} にそれぞれ Z Z の重みを固定します。 その後、各ボールは次の規則にしたがって、一斉に運動を始めます。

  • 各時点で、ボールの存在している座標より真に右側にある座標・ボールの重みの総 XOR \mathrm{XOR} R R 、真に左側にある座標・ボールの重みの総 XOR \mathrm{XOR} L L とすると、このボールは R > L R\ >\ L であれば右側に、L > R L\ >\ R であれば左側に毎秒 1 1 の速さで動き、L=R L=R であれば静止する。
  • 左右から来たボールが同じ座標に到達したときなど、同じ座標に同時に複数のボールが存在した場合、これらのボールは合体し、その重みは合体前の重みの総 XOR \mathrm{XOR} となる。

このとき、100100 100^{100} 秒以内に全てのボールが静止するような Z Z はいくつあるでしょうか。

XOR \mathrm{XOR} とは 非負整数 A, B A,\ B のビット単位 XOR \mathrm{XOR} A  B A\ \oplus\ B は、以下のように定義されます。

  • A  B A\ \oplus\ B を二進表記した際の 2k 2^k (k  0 k\ \geq\ 0 ) の位の数は、A, B A,\ B を二進表記した際の 2k 2^k の位の数のうち一方のみが 1 1 であれば 1 1 、そうでなければ 0 0 である。

例えば、3  5 = 6 3\ \oplus\ 5\ =\ 6 となります (二進表記すると: 011  101 = 110 011\ \oplus\ 101\ =\ 110 )。
一般に k k 個の非負整数 p1, p2, p3, , pk p_1,\ p_2,\ p_3,\ \dots,\ p_k のビット単位 XOR \mathrm{XOR} は $ (\dots\ ((p_1\ \oplus\ p_2)\ \oplus\ p_3)\ \oplus\ \dots\ \oplus\ p_k) $ と定義され、これは p1, p2, p3, , pk p_1,\ p_2,\ p_3,\ \dots,\ p_k の順番によらないことが証明できます。

输入格式

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

N N w1 w_1 w2 w_2 \ldots w2N1 w_{2^N-1}

输出格式

答えを整数で出力せよ。

题目大意

一条直线上有 2N12^N-1 个初始坐标分别为 12N11 \sim 2^N-1 的动点。其中坐标为 ii 的点有一个权值 wiw_i

现在你要在 +100100100+100^{100^{100}}100100100-100^{100^{100}} 坐标处各加一个不超过 2N12^N-1 非负权值 ZZ,然后 2N12^N-1 个点会按照下列规则同时从初始坐标开始移动:

  • 每个单位时间内,记严格小于一个点的坐标的权值异或和为 LL,严格大于这个点的权值异或和为 RR。当 L<RL < R 时,这个点会以 11 个单位长度每个单位时间的速度向右移动;L>RL > R 时则会以同样速度向左移动;L=RL = R 时,这个点会静止不动。

  • 当两个点在同一时间到达同一坐标时,这两个点会合并成一个点,新点的权值为两个点权值的异或和。

请求出可以使所有点在 100100100^{100} 个单位时间内静止下来的 ZZ 的个数。

(注:+100100100+100^{100^{100}}100100100-100^{100^{100}} 处只是增加了 ZZ 的权值,初始时并没有动点。)

保证 2N182 \le N \le 181wi2N11 \le w_i \le 2^N-1iji \not = jwiwjw_i \not = w_j,输入的所有数均为整数。

何为异或和

2
1 2 3
1
3
7 1 2 3 4 5 6
2

提示

制約

  • 2 N 18 2\leq\ N\leq\ 18
  • 1 wi 2N1 1\leq\ w_i\leq\ 2^N-1
  • i j i\neq\ j のとき wi wj w_i\neq\ w_j
  • 入力される値はすべて整数である

Sample Explanation 1

i i の重みを持つボールを単に i i と呼びます。 例えば Z=0 Z=0 とした場合、はじめ 1 1 2 2 は右向きに、3 3 は左向きに動きます。 すると 2 2 3 3 がぶつかって合体し、この瞬間から左向きに動き始めます。 そののち、1 1 から 3 3 まで全てのボールが合体した瞬間に合体後のボールは静止します。 したがって、Z=0 Z=0 は条件を満たします。 また、Z=3 Z=3 とした場合、1 1 2 2 は左向き、3 3 は右向きに、固定した重みに向かって 100100100 100^{100^{100}} 秒程度動き続けることになります。 したがって、Z=3 Z=3 は条件を満たしません。 実は Z=0 Z=0 のみが条件を満たすため、1 1 と答えてください。