XOR key
来源:互联网 发布:无线通信优化工程师 编辑:程序博客网 时间:2024/04/30 00:45
51nod 1295
可持久化trie,其实和可持久化线段树差不多
之前写过一次,现在加深了一点点对于可持久化的理解
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define FOR(i,a,b) for(int i=a;i<=b;i++)#define ROF(i,a,b) for(int i=a;i>=b;i--)#define mem(i,a) memset(i,a,sizeof(i))#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1#define ll long long#define LL long longusing namespace std;const int maxn = 5e4+7;int tr[maxn*40][2],sum[maxn*40],root[maxn];int n,m,cnt=0,x;void update(int len,int x,int &u,int v) { u = ++cnt; for(int i = 0;i<2;i++) tr[u][i] = tr[v][i]; sum[u] = sum[v]+1; if(len==0) return; update(len-1,x,tr[u][(x>>len-1)&1],tr[v][(x>>len-1)&1]);}int query(int len,int u,int v) { int now = 1-((x>>(len-1))&1); if(len==0) return 0; if(sum[tr[u][now]] > sum[tr[v][now]]) return query(len-1,tr[u][now],tr[v][now])+(1<<(len-1)); return query(len-1,tr[u][1-now],tr[v][1-now]);}int main() { scanf("%d%d",&n,&m); for(int i = 1;i<=n;i++) { scanf("%d",&x); update(30,x,root[i],root[i-1]); } int l,r; for(int i = 1;i<=m;i++) { scanf("%d%d%d",&x,&l,&r); printf("%d\n",query(30,root[r+1],root[l])); } return 0;}
阅读全文
0 0
- XOR key
- 51nod1295 XOR key
- 51nod1295 XOR KEY
- 【51Nod1295】XOR key
- 51Nod 1295 (XOR key)
- 51Nod-1295-XOR key
- 51nod 1295 XOR key
- 51nod 1295 XOR key
- 51nod 1295 XOR key(字典树)
- 【51nod 6级题目】XOR key 问题
- 可持久化Trie——51nod1295 XOR key
- xor
- XOR ^
- xor
- xor
- xor
- 51Nod——1295 XOR key(贪心+可持久化字典树)
- 51nod 1295 XOR key 01trie(可持久化字典树坑已填)
- jquery ajax向spring mvc controller中传值并接受及解析返回值
- 网页Css知识之简单相册
- FastDFS 双tracker负载均衡
- 021-格局修炼|当骨干前来辞职
- 算法竞赛入门经典 UVa1225数数字
- XOR key
- 设计模式——外观模式(Facade Pattern)
- Css第一天
- Java学习第三天
- 设计模式 共享模式
- 解决android studio加载项目时一直处于build gradle project info问题
- HOG描述子提取
- android studio 插件大全
- 2017湘潭赛XTU1266Parentheses