#P6466. 分散层叠算法(Fractional Cascading)
分散层叠算法(Fractional Cascading)
题目背景
Fractional Cascading
算法,国内多译为“分散层叠”。
本题仅提供一个简单而经典的方式给算法验证正确性,原则上会尽量卡掉比较暴力的做法,但不保证乱搞一定无法通过。
题目描述
给出 个长度为 的有序数组。
现在有 个查询 : 给出数 ,分别求出每个数组中大于等于 的最小的数(非严格后继)。
若后继不存在,则定义为 。
每个查询的答案定义为 个后继的异或和。
你需要在线地回答这些询问。
由于输出太多不好,给出参数 ,你只需要输出编号为 的倍数的询问的答案。询问从 开始编号。
输入格式
第一行四个整数 ,意义如题面所述。
后 行,每行 个整数,描述一个数组。所有数组中出现过的数不重复,保证每个数组严格递增。
后 行,每行一个整数 ,描述一个询问。
输入中所得的 需要与上一个询问的答案(无论是否输出)异或解密,如果这是第一个询问,则无需操作。
输出格式
对于编号为 的倍数的每个询问,输出一行一个整数,表示 个后继的异或和。
提示
样例解释
对于样例 1,解密后的数据为:
数据规模的与约定
- 对于 的数据,,,。
- 对于 的数据,,。
- 对于 的数据,,,,,解密后输入中出现的数均在 范围内。