bzoj4546-codechef XRQRS(可持久化Trie)
中文题题意我就不说了
解析: 可持久化Trie的模板题,详见注释
代码
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
const int maxbit=;
const int maxn=;
int tr[];
struct PerTrie
{
int id;
int next[maxn][],num[maxn];
void init(){ id=next[][]=next[][]=num[]=; }//初始化
int f(int x,int i){ return (x>>i)&; } //判断x的第i位为0或1
void Insert(int& rt,int pre,int x,int pos) //插入
{
rt=++id;
next[rt][]=next[pre][]; //赋等
next[rt][]=next[pre][];
num[rt]=num[pre]+; //数量加1
if(pos==-) return;
int d=f(x,pos);
Insert(next[rt][d],next[pre][d],x,pos-);
}
int MaxXor(int l,int r,int x)
{
int ret=;
for(int i=maxbit;i>=;i--)
{
int d=f(x,i);
int a=next[l][d^],b=next[r][d^];
if(num[b]-num[a]>) ret|=(<<i),l=a,r=b; //判断是否存在
else l=next[l][d],r=next[r][d];
}
return ret;
}
int MinNum(int l,int r,int x)
{
int ret=;
for(int i=maxbit;i>=;i--)
{
int d=f(x,i);
if(d) ret+=num[next[r][]]-num[next[l][]]; //比它小的加上
l=next[l][d]; r=next[r][d];
}
ret+=num[r]-num[l]; //<=要加上它,<的话就不用了
return ret;
}
int Kth(int l,int r,int k)
{
int ret=;
for(int i=maxbit;i>=;i--)
{
int t=num[next[r][]]-num[next[l][]];
if(t>=k) l=next[l][],r=next[r][]; //足够
else ret|=(<<i),l=next[l][],r=next[r][],k-=t;
}
return ret;
}
}PT;
int main()
{
int Q;
scanf("%d",&Q);
int type,l,r,x,cnt=;
tr[]=;
PT.init();
while(Q--)
{
scanf("%d",&type);
if(type==)
{
scanf("%d",&x);
++cnt;
PT.Insert(tr[cnt],tr[cnt-],x,maxbit); //插入新的值
}
else if(type==)
{
scanf("%d%d%d",&l,&r,&x);
printf("%d\n",PT.MaxXor(tr[l-],tr[r],x)^x);
}
else if(type==)
{
scanf("%d",&x);
cnt-=x;
}
else if(type==)
{
scanf("%d%d%d",&l,&r,&x);
printf("%d\n",PT.MinNum(tr[l-],tr[r],x));
}
else
{
scanf("%d%d%d",&l,&r,&x);
printf("%d\n",PT.Kth(tr[l-],tr[r],x));
}
}
return ;
}
bzoj4546-codechef XRQRS(可持久化Trie)的更多相关文章
- bzoj 4546: codechef XRQRS [可持久化Trie]
4546: codechef XRQRS 可持久化Trie codechef上过了,bzoj上蜜汁re,看别人说要开5.2e5才行. #include <iostream> #includ ...
- 【BZOJ4260】 Codechef REBXOR 可持久化Trie
看到异或就去想前缀和(⊙o⊙) 这个就是正反做一遍最大异或和更新答案 最大异或就是很经典的可持久化Trie,从高到低贪心 WA: val&(1<<(base-1))得到的并不直接是 ...
- BZOJ4546: codechef XRQRS
Description 给定一个初始时为空的整数序列(元素由1开始标号)以及一些询问: 类型1:在数组后面就加入数字x. 类型2:在区间L…R中找到y,最大化(x xor y). 类型3:删除数组最后 ...
- HDU 4757 Tree(可持久化Trie+Tarjan离线LCA)
Tree Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others) Total Su ...
- 可持久化Trie & 可持久化平衡树 专题练习
[xsy1629]可持久化序列 - 可持久化平衡树 http://www.cnblogs.com/Sdchr/p/6258827.html [bzoj4260]REBXOR - Trie 事实上只是一 ...
- HDU 4757 Tree(可持久化trie)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4757 题意:给出一棵树,节点有权值.每次询问x到y的路径上与z抑或的最大值. 思路:可持久化trie. ...
- 可持久化trie 学习总结
QAQ 以前一直觉得可持久化trie很难,今天强行写了一发觉得还是蛮简单的嘛 自己的模板是自己手写的,写了几道题目并没有出过错误 THUSC的第二题的解法五貌似就是可持久化trie,时间复杂度O(60 ...
- [BZOJ 4103] [Thu Summer Camp 2015] 异或运算 【可持久化Trie】
题目链接:BZOJ - 4103 题目分析 THUSC滚粗之后一直没有写这道题,从来没写过可持久化Trie,发现其实和可持久化线段树都是一样的.嗯,有些东西就是明白得太晚. 首先Orz ZYF-ZYF ...
- bzoj 2741: 【FOTILE模拟赛】L 分塊+可持久化trie
2741: [FOTILE模拟赛]L Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 1116 Solved: 292[Submit][Status] ...
随机推荐
- eclipse3.7 安装maven插件与scm
转自:http://blacksonny.iteye.com/blog/1900275 最近要使用maven进行开发,之前的eclipse3.7 使用一下两个地址安装好了插件,如下: maven插件 ...
- 马士兵 Servlet_JSP(2) JSP源代码)
1.最简单的JSP HelloWorld.jsp <html> <head> <title>Hello</title> ...
- js获取url传递参数(转的,原作不详)
这里是一个获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET 函数: <Script languag ...
- pyqt node节点1
#!/usr/bin/env python # coding: utf-8 from PyQt4.QtGui import * from PyQt4.QtCore import * rad = 5 c ...
- 斐波那契数列 Php练手
数列从第三项开始,每一项都等于前两项之和. F0=0,F1=1,Fn=F(n-1)+F(n-2) 递归版和非递归版. <?php function fib($n){ $array = array ...
- QiniuUpload- 一个方便用七牛做图床然后插入markdown的小工具
最近一段时间有用markdown做笔记,其他都好,但是markdown插入图片挺麻烦的,特别是想截图之后直接插入的时候.需要首先把图片保存了,然后还要上传到一个地方生成链接才能插入.如果有个工具可以直 ...
- Android 自定义UI--电池
首先看一下效果图, 下面看代码: /** * */ package com.example.batterydemo; import android.content.Context; import an ...
- Mysql 细节记忆
DELIMITER $$ 和 DELIMITER ; DROP PROCEDURE IF EXISTS `pro_follow_getBookBeforeExpired`$$ DECLARE p_Se ...
- SqlCommand和SqlDataAdapter有什么区别
因为DataSet是离线的,所以SqlDataAdapter这个对象是连接DataSet和数据库的桥梁,所有对DataSet的操作(填充,更新等)都要通过他 ado.net数据访问有两种方式: 1.离 ...
- DOM 其他一些特性
cookie 允许javascript程序读写HTTP cookie 的特殊的属性 domain 允许当Web页面之间交互时,相同域名下相互信任的Web服务器之间协作放宽同源策略安全限制 (JavaS ...