[原创]2017 年第 0 届浙江工业大学之江学院程序设计竞赛决赛 I: qwb VS 去污棒 [可持久化 01 字典树]【数据结构】
2017-06-03 02:41:12 Tabris_ 阅读数:969
博客爬取于 2020-06-14 22:40:14
以下为正文
版权声明:本文为 Tabris 原创文章,未经博主允许不得私自转载。
https://blog.csdn.net/qq_33184171/article/details/72849787
题目链接:http://115.231.222.240:8081/JudgeOnline/problem.php?cid=1005&pid=8
——————————————————————————————————————————
Problem I: qwb VS 去污棒
Time Limit: 2 Sec Memory Limit: 256 MB
Submit: 74 Solved: 26
[Submit][Status][Web Board]
Description
qwb 表白学姐失败后,郁郁寡欢,整天坐在太阳底下赏月。在外人看来,他每天自言自语,其实他在和自己的影子“去污棒”聊天。
去污棒和 qwb 互相出题考验对方,去污棒问了 qwb 这样一个问题:
现已知一个有 n 个正整数的序列 a[1],a[2]...a[n],接下来有 m 个操作
操作一共有两种:
1.在序列末尾添加一个数 x。
2.查询 suf[p] xor x 的最大值,其中 xor 是异或 ,l<=p<=r,
suf[t]表示从 t 开始的后缀的异或和,即 suf[t]=a[t] xor a[t+1] xor ...xor a[len],len 为序列长度。
Input
第一行一个整数 T(<=5),表示一共有 T 组数据。
每组数据第一行两个整数 n(<=200000),m(<=200000),意义如上所述。
随后一行有 n 个数,表示初始序列。
随后 m 行,每行表示一个操作。
操作有两种,1: x 表示在末尾添加一个 x,2: l r x 表示查询 suf[p] xor x 的最大值,其中 l<= p <= r,
所有数及 x 不超过 224 且保证所有操作合法。
Output
每组测试数据的第一行输出"Case x:",x 为数据组数的标号,从 1 开始。
接下来,对每个操作 2 输出一行答案。
Sample Input
1
5 5
1 2 3 4 5
2 1 3 4
1 10
1 7
2 4 4 5
2 1 5 19
Sample Output
Case 1:
6
9
31
——————————————————————————————————————————
以下是边做题时边写的
可持久化 Trie 离线,维护后缀异或和 然后在区间上进行查找
其实通过消去率能将 suffix 变成前缀,不对么
yes
假如序列长度为 n
那么 prexor[n]^prexor[k] = suf[k+1]; 所以在线就好了;
可持久化 01 字典树,那就用一个可持久化线段树来实现,怎么搞呢。
算了还是先改了别人的吧。。。
异或最大值就想到了 01trie
但是限制区间所以要可持久化
可持久化 01 字典树可以借鉴主席树来写,
但是我这个最后被卡常了,加了读入挂才 AC
附本题代码
——————————————————————————————————————————
1 | # include <bits/stdc++.h> |
[原创]2017年第0届浙江工业大学之江学院程序设计竞赛决赛 J: qwb又偷懒了 [BIT]【数据结构】
[原创]2017 年第 0 届浙江工业大学之江学院程序设计竞赛决赛 J: qwb 又偷懒了 [BIT]【数据结构】 2017-06-03 02:44:15 Tabris_ 阅读数:572 博...
[原创]2017年第0届浙江工业大学之江学院程序设计竞赛决赛 H: qwb与学姐 [MST+LCA]【数据结构】
[原创]2017 年第 0 届浙江工业大学之江学院程序设计竞赛决赛 H: qwb 与学姐 [MST+LCA]【数据结构】 2017-06-03 02:36:00 Tabris_ 阅读数:735...


