求出满足序列中没出现的最小的数(即 $ MEX $ )为 $ a $,序列的 $ XOR $ 值为 $ b $ 的序列的长度最小值。
首先我们可以知道,$ 0 \sim a-1 $ 的数一定都在序列中出现过至少一次,而 $ a $ 一定不存在于序列中,那么我们可以先求出 $ 0 \sim a-1 $ 中所有数的 $ XOR $ 的值,如果他的值与 $ b $ 相等,那么答案为 $ a $ ,如果不相等,那么将它与 $ b $ 作异或,如果得出的答案不是 $ a $,那么我们只要在添加一个这个数即可,如果是 $ a $ ,我们只能用两个数异或得出这个 $ a $ ,答案为 $ a+2 $ 。
for (i=1;i<=300000;i++) f[i]=f[i-1]^i;
for (T=read();T;T--)
{
a=read();b=read();
ans=f[a-1]^b;
if (ans==0) printf("%d\n",a);
else if (ans!=a) printf("%d\n",a+1);
else printf("%d\n",a+2);
}
原文:https://www.cnblogs.com/huangxuze/p/15237834.html