题目 | 蒋贤蒙 | 王赵安 | 王智彪 |
---|---|---|---|
A | 0 | 0 | 0 |
B | 1 | 0 | 0 |
C | 1 | 0 | 0 |
D | 0 | 0 | 0 |
E | 2 | 0 | 0 |
F | 2 | 0 | 0 |
G | 0 | 0 | 0 |
H | 0 | 0 | 0 |
I | 2 | 0 | 0 |
J | 2 | 0 | 0 |
给定一个序列 $A$,接下来两种操作:
$$ a_n=\left(\bigoplus_{i=1}^n b_i\right)\oplus\left(\bigoplus_{i=1}^n\bigoplus_{k=0}^{29} 2^k c(i,k)\right)\\ c(n,k)=\bigoplus_{i\times 2^k\le n} d(n-i\times 2^k,k) $$
简单来讲 $a_n$ 是 $b_i,c(i,k)$ 的前缀和,$c(n,k)$ 是 $d(i,k)$ 的隔 $2^k$ 项前缀和。
然后操作 $1$ 只需要修改 $b_i$ 即可。操作 $2$ 的影响按位考虑影响,将 $[l,r]$ 区间操作等效于 $[l,\inf),[r+1,\inf)$ 两次操作。
每次操作对每个位是按 $001111000011110000$ 的规律周期性变化的。
对该序列进行一次差分,于是得到 $001000100010001000$,这个可以利用 $c(n,k)$ 维护。
再一次差分得到 $001000000000000000$ 发现可以利用 $d(n,k)$ 维护。
最后处理一下最开始非周期的部分即可,时间复杂度 $O((n+q)\log v)$。