C. 徐老师的序列变换

    传统题 文件IO:sequence 1000ms 256MiB

徐老师的序列变换

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

徐老师的序列变换

文件读写

  • 输入文件sequence.in
  • 输出文件sequence.out

限制

  • 1000ms
  • 512MB

题目描述

徐老师有一个序列 aa 包含 nn 个整数,分别为 aia_i

现在徐老师每次可以进行一次操作,操作分 22 步:

  1. 计算 sum=a1⊕a2⊕...⊕ansum = a_1 \oplus a_2 \oplus ... \oplus a_n
  2. 徐老师选择一个下标 xx 进行赋值 a[x]=suma[x] = sum

现在徐老师想知道,要将 aa 序列变成 bb 序列最少需要花费多少次操作?

P.S. 其中 ⊕\oplus 是异或(xorxor)操作,在 C++ 中可以用 a^b 来表示

输入格式

输入第一行包含一个整数 nn 表示序列长度

输入第二行包含 nn 个整数,表示原序列中的数字 aia_i

输入第三行包含 nn 个整数,表示目标序列的数字 bib_i

输出格式

输出一个整数表示最少的操作次数

数据范围

对于 30%30\% 的数据满足: 1≤n≤101 \leq n \leq 10

对于另外 30%30\% 的数据满足:ai=ia_i=i 且 nn 在二进制下每一位均为 11

对于 100%100\% 的数据满足:1≤n≤100000,0≤ai,bi≤2301 \leq n \leq 100000, 0 \leq a_i,b_i \leq 2^{30}

且题目保证一定有解

样例输入1

3
0 1 2
2 0 1

样例输出1

4

样例解释1

每一次操作选择的 xx 依次是:1,2,3,11,2,3,1

样例输入2

4
0 1 2 3
2 0 1 3

样例输出2

3