时间限制:1000ms
空间限制:512MB
问题描述
熊熊有一个长度为 n 的序列 a,有以下函数
cpp
void update(int u){
int w=0;
for(int i=1;i<=n;i++) w^=a[i];
a[u]=w;
}
熊熊可以执行这个函数若干次,其中参数 u 由你指定,请问将序列 a 修改为序列 b 的最小调用次数是多少。
数据保证存在一种方案在有限步数内,将序列 a 修改为序列 b。
输入格式
输入第一行,包含 1 个正整数 n。
第二行给定 n 个正整数,表示 ai。
第三行给定 n 个正整数,表示 bi。
输出格式
输出一行,包含一个整数,表示答案。
样例输入1
样例输出1
样例解释
依次执行 update(1),update(3)。
样例输入2
样例输出2
样例输入/样例输出3
见下发文件中的 xor1.in/xor1.ans。
样例输入/样例输出4
见下发文件中的 xor2.in/xor2.ans。
评测数据规模
对于 30% 的数据,1≤n≤10。
对于另外 30% 的数据,∀1≤i≤n,ai=i,n=2k−1,其中 k 为大于 1 的正整数。
对于所有测评数据,1≤n≤105,0≤ai,bi<230。