P6466 分散层叠算法(Fractional Cascading)
题目背景
`Fractional Cascading` 算法,国内多译为“分散层叠”。
本题仅提供一个简单而经典的方式给算法验证正确性,原则上会尽量卡掉比较暴力的做法,但不保证乱搞一定无法通过。
题目描述
给出 $k$ 个长度为 $n$ 的**有序数组**。
现在有 $q$ 个查询 : 给出数 $x$,分别求出每个数组中大于等于 $x$ 的最小的数(非严格后继)。
若后继不存在,则定义为 $0$。
每个查询的答案定义为 $k$ 个后继的**异或和**。
你需要**在线地**回答这些询问。
由于输出太多不好,给出参数 $d$,你只需要输出编号为 $d$ 的倍数的询问的答案。询问从 $1$ 开始编号。
输入格式
无
输出格式
无
说明/提示
#### 样例解释
对于样例 1,解密后的数据为:
```cpp
6 3 8 1
1 4 6 7 10 20
2 3 8 11 14 18
5 9 12 13 15 17
20
18
15
13
10
8
5
2
```
---
#### 数据规模的与约定
- 对于 $20\%$ 的数据,$k\leq 10$,$n\leq 1000$,$q\leq 1000$。
- 对于 $50\%$ 的数据,$k\leq 10$,$q\leq 2\times 10^5$。
- 对于 $100\%$ 的数据,$1 \leq k\leq 100$,$2\leq n\leq 10^4$,$q\leq 5\times 10^5$,$1\leq d\leq 10$,解密后输入中出现的数均在 $[1,5\times 10^8)$ 范围内。