CF768C题解
Description:
有一个长度为 \(n(1\leq n\leq10^5)\) 的数组 \(a(0\leq a_i\leq 1000)\),你要进行 \(k(0\leq k\leq10^5)\) 次操作:
- 将数组排序;
- 将数组中下标为奇数的数字异或 \(x(0\leq x\leq1000)\)。
问操作完毕后数组中最大值和最小值。
重在乱搞。
随便手造了几组小数据,发现都在若干步之后进入了循环。所以我们大胆猜测:对于所有数据,一定会进入循环。
不知道怎么证明,但是因为通过了,所以这个猜测是正确的。
后面就全是暴力了。暴力做每一步,做完以后哈希,每次判断是否与之前某一位的哈希值相等即可。如果相等了,说明陷入了循环。算一下循环节就知道 \(k\) 对应循环中的哪一位。
似乎不用哈希也能过?但是用了的话匹配会快很多,也省空间。
注意 \(k=0\) 的数据。