Luogu5312 [Ynoi2011] 竞赛实验班
题意 : 给出长为
- 在数组
的末尾添加一个数 。
- 区间求和。
- 将数组
中的每个数 都改为 。( 表示异或操作)。
- 将数组
从小到大排序。
若不存在操作 3,序列肯定形如一段排好序的以及一段未排序的,而且排好序的段只会延长。
对于排好序的数,用权值线段树维护,区间求和可以转化为前
对于未排序的部分,直接用树状数组维护。
接下来考虑操作 3。
记下两类标记,一类是全局异或标记
当 push_back
一个数
用 01Trie 维护排好序的部分,查询前
我们要支持查询子树在异或
对于未排序的部分,用前缀和维护即可。
在全局排序时,只需将未排序的部分插入 Trie 中。
时间复杂度