我是靠谱客的博主 和谐学姐,最近开发中收集的这篇文章主要介绍P4735 最大异或和 (可持续化01 trie),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

做法

将每一个前缀异或和插入 trie
因为对区间操作 所以我们将其可持续化
每个节点存个数 类似主席树的做法
空间能开多大就开多大
注意 必须插入0

#include <bits/stdc++.h>
using namespace
std;
//#define
int long long
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef vector<int> vi;
#define fi first
#define se second
#define pb
push_back
#define inf 1<<62
#define endl "n"
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define de_bug(x) cerr << #x << "=" << x << endl
#define all(a) a.begin(),a.end()
#define IOS
std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define
fer(i,a,b)
for(int i=a;i<=b;i++)
#define
der(i,a,b)
for(int i=a;i>=b;i--)
const int mod = 1e9 + 7;
const int N = 6e5 + 10;
const int M = 4e7 + 10;
int n, m , k;
int son[M][2];
int rt[N];
int cnt[M];
int idx;
int sum[N];
void change(int &o, int pre, int d, int val) {
if(d < 0)return ;
int t = (val >> d) & 1;
son[o][!t] = son[pre][!t];
son[o][t] = ++idx;
cnt[son[o][t] ] = cnt[son[pre][t]] + 1;
change(son[o][t], son[pre][t], d - 1, val );
}
int query(int now, int pre, int d, int val) {
if(d < 0)return 0;
int t = (val >> d) & 1;
if(cnt[son[now][!t]] - cnt[son[pre][!t]] > 0)
return
(1 << d) + query(son[now][!t], son[pre][!t], d - 1, val);
else return query(son[now][t], son[pre][t], d - 1, val);
}
void solve() {
cin >> n >> m;
rt[0] = ++idx;
change(rt[0], 0, 25, 0);
for(int i = 1; i <= n; i++) {
int x;
cin >> x;
sum[i] = sum[i - 1] ^ x;
rt[i] = ++idx;
change(rt[i], rt[i - 1], 25, sum[i]);
}
for(int i = 1; i <= m; i++) {
char op;
cin >> op;
if(op == 'A') {
int x;
cin >> x;
n++;
sum[n] = sum[n - 1] ^ x;
rt[n] = ++idx;
change(rt[n], rt[n - 1], 25, sum[n]);
} else {
int l, r, x;
cin >> l >> r >> x;
l--;
r--;
if(!l)cout << query(rt[r], 0, 25, sum[n]^x) << endl;
else
cout << query(rt[r], rt[l - 1], 25, sum[n]^x) << endl;
}
}
}
int main() {
IOS;
int _ = 1;
//cin>>_;
while( _-- )
solve();
}

最后

以上就是和谐学姐为你收集整理的P4735 最大异或和 (可持续化01 trie)的全部内容,希望文章能够帮你解决P4735 最大异或和 (可持续化01 trie)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部