luogu#P9216. [入门赛 #11] 写大作业 (Hard Version)
[入门赛 #11] 写大作业 (Hard Version)
题目背景
本题与 Easy Version 的区别在于:输入的是数列而不是字符串,输入输出格式不同,数据规模不同。
题目描述
扶苏为了写计算理论大作业已经 小时没有合眼了。
为了能快点睡觉,扶苏找到了 份文献,第 份文献是一数列 ,她打算把这些文献组合起来。
具体来说,一共有两种操作:
1 x y
:把文献 整体拼接到 的后面,然后删除 。2 x y
:查询 和 是否相似。
我们保证在 1 x y
操作出现后,数列 不会出现在接下来的任何操作中。这就是说,操作 至多有 次。
相似的定义是:对两个数列 和 ,如果存在一种重新排列 的方法,使得重排后的 和 相等,则称 和 相似。
例如,假设 , ,,则执行 1 1 2
后, 被删除,,;继续执行 2 2 3
后,因为可以把 重排为 ,所以 和 相似。
注意,操作 不会对数列做出实际修改。
输入格式
第一行是两个整数,分别表示文献的数量 和操作的数量 。
接下来 行,每行描述一个数列。第 行描述 :
每行第一个数是 ,表示数列 的长度,接下来有 个数,描述数列 。
接下来 行,每行三个整数 ,其含义见『题目描述』。
输出格式
为了避免输出过大,请你输出一行一个整数,表示所有答案为两数列相似的询问的操作编号的按位异或和。
操作的编号从 开始,两种操作均会令编号增加 。你可以参考样例解释来理解输出格式。
4 5
2 1 2
2 3 4
4 1 2 3 4
4 1 2 3 3
1 1 2
2 2 3
2 3 4
2 2 4
2 3 2
7
提示
样例解释
共有五次操作,它们的编号和回答情况如下:
| 编号 | 操作 | 回答 |
| :-: | :-: | :-: |
| | 1 1 2
| 不是查询操作|
| | 2 2 3
| 相似 |
| | 2 3 4
| 不相似 |
| | 2 2 4
| 不相似 |
| | 2 2 3
| 相似 |
可以看到,回答为两数列相似的询问的操作编号为 和 。它们的按位异或和是 。故输出为 。
数据规模与约定
对全部的测试点,保证 ,,,。数列里的元素都是不超过 的非负整数。
数据保证数列元素的生成方式是:对一个数列,限定一个该数列元素大小的上界 ,然后在 内均匀随机地生成 个整数作为数列 。注意, 不一定是 。