loj#P6203. 可持久化队列
可持久化队列
题目描述
这是一道假的模板题
我们有一个数组 ,初始时只有 是空序列。对于第 个操作:
1 ver t
表示将 复制到 ,并在 结尾插入元素2 ver
表示将 复制到 ,并删除 开头的元素(保证 非空)
此外,你需要维护一个变量 ,其初始值为 ,每次执行完第二类操作时,将 变为 ,其中 是被删除的元素。
是你的最终输出的答案。
此外,输入数据有可能加密,取决于输入参数 的值。如果 ,那么数据没有加密;否则,,那么读入 和 的值,其真实值应与当前的 取按位异或,也就是说真实值应为 和(对于第一类操作) 。
输入格式
第一行有两个整数, 和 ,表示有多少个操作,和数据是否加密。
之后的 行,每一行表示一个如上所述的操作。
输出格式
只有一行,表示执行完所有操作之后, 的值。
9 0
1 0 1
1 1 2
2 1
2 2
2 2
2 4
1 4 5
2 7
2 8
29584452
9 1
1 0 1
1 1 2
2 1
2 3
2 34
2 997
1 30789 30788
2 30790
2 954345
29584452
数据范围与提示
测试点编号 | T | ty |
---|---|---|
1 | 1 | |
2, 3, 4 | ||
5, 6 | 0 | |
7, 8, 9, 10 | 1 |
对于所有操作,保证操作合法,即格式正确,不会在空的版本上进行操作 , 且 小于当前操作编号。
对于第一类操作,
请使用无符号整数进行输入输出!变量应使用 unsigned
类型,printf
和 scanf
应使用 %u
格式。
如果你使用冲击满分的算法,但是使用 scanf
,你的程序很可能将花费超过 的运行时间在输入数据。所以请务必使用读入优化!可以参考附加文件中 bqsg 提供的 read.cpp 实现的 A + B Problem 的程序。