P5283-十二省联考-2019-异或粽子
题意
给出 \(n\) 个数,求所有区间 \([l,r]\) 异或后的前 \(k\) 大值之和。
\(n\le 5\times 10^5,k\le \min\left\{\frac{n(n-1)}{2},2\times 10^5\right\}\)
思路
对于区间异或的问题,我们可以对序列做前缀异或来变成两点异或问题。然后我们发现,现在的问题是说我们要选择的两点需要有一个顺序关系。但是我们可以直接钦定随意选择两点,这样就变成了第 \(2k\) 大值,且因为两个相同的点异或为 \(0\),所以不需要考虑两点不同。
之后我们把这 \(n+1\) 个值全部放进 01-trie 里,然后对于一般的 \(k\) 大值问题,考虑对于每一个点去查询当前的最大值,放进优先队列里,然后每一次访问就将下一个大值放进去。通过在字典树上二分解决。
复杂度 \(\mathcal{O}((n+k)\log a\log k)\)。

浙公网安备 33010602011771号