有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c
如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少。
为了强制在线,每一次的a,b是加密的,需要异或lastans的后8位进行解密,其中lastans为上次输出的结果,初始为零。
如果解密后a>b则先交换a,b
数据保证解密后a,b不会超过N
如果解密后a,b出现0,则赋值为1。
来历:bzoj上的一道题,经过子祯学长的魔改后,数据范围变得很奇怪…
算法:树套树;
权值线段树套线段树;
套线段树有技巧:一颗线段树可以先只创造一个点,其他需要的节点需要用到的时候再开就可以了;
其他的也没什么可说了,看代码吧:
(不要交到bzoj上,过不了,这是经过魔改的题目)
(不建议借鉴,初次写这种题,code还比较稚嫩)
#include
#include
#include
#include
#include
#include
#include
#include
#include