zak 的随手构造
今天 zak 来讲题讲到了 [ABC274Ex] XOR Sum of Arrays 。
给出一个序列
a ,询问:
- 提取出
[l_1,r_1],[l_2,r_2],[l_3,r_3] 这三个区间,考虑每一位,对位异或和是否都为0 。
我提出了这样一个算法:
随机几个
len,k ,设b_i 为a_i 按照len 的长度循环左移k*i 位的结果,维护b 的异或和,判断时直接判断b 的异或和是否相同。
后来这个算法通过了 atcoder 的数据并跑到了 luogu 次优解。
然后,zak 给出了随手的构造叉掉了我的做法:
-
a_i=[x^i]\prod_{i=1}^{64}(1+x^i) \mod 2
以下先提出一个问题:
给定
n ,构造一个无穷长的序列,这个序列只有前有限项的值可能为1 ,之后都是0 ,且对于任意0\le i<j\le n, \oplus a_{kj+i}=0 。要求上述“前有限项”长度
\le n^2 ,且不能全为0 。
不难发现,这个构造题可以卡掉我的构造。
构造:
解释:
考虑每个
你发现这个串是
注意到每次去拼的时候,每个模