ACdream1063——平衡树
1、题目大意:让你设计一种数据结构,支持插入一个数,和在这个结构里查询结构中的哪个数和给定的数的异或值最小
2、分析:这个怎么做呢,就是trie树,我们建立一个trie树,把树按01进制存进去,然后在查询的时候,
我们就贪心的在trie树的一直走
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
struct Trie{
int ch[1000000][3];
int num;
inline void insert(int k){
int u = 0;
for(int i = 30; i >= 0; i --){
int s = ((1 << i) & k);
if(s){
if(!ch[u][1]){
num ++;
ch[u][1] = num;
}
u = ch[u][1];
}
else{
if(!ch[u][0]){
num ++;
ch[u][0] = num;
}
u = ch[u][0];
}
}
return;
}
inline int qmin(int k){
int u = 0;
int ret = 0;
for(int i = 30; i >= 0; i --){
int s = ((1 << i) & k);
if(s) {
if(ch[u][1]){
u = ch[u][1];
ret += (1 << i);
}
else{
u = ch[u][0];
}
}
else{
if(ch[u][0]){
u = ch[u][0];
}
else{
u = ch[u][1];
ret += (1 << i);
}
}
}
return ret;
}
inline int qmax(int k){
int u = 0;
int ret = 0;
for(int i = 30; i >= 0; i --){
int s = ((1 << i) & k);
if(s) {
if(ch[u][0]){
u = ch[u][0];
}
else{
u = ch[u][1];
ret += (1 << i);
}
}
else{
if(ch[u][1]){
u = ch[u][1];
ret += (1 << i);
}
else{
u = ch[u][0];
}
}
}
return ret;
}
} wt;
int main(){
int T;
scanf("%d", &T);
while(T --){
memset(wt.ch, 0, sizeof(wt.ch));
wt.num = 0;
int n;
scanf("%d", &n);
char str[10];
int k;
for(int i = 1; i <= n; i ++){
scanf("%s", str);
scanf("%d", &k);
if(str[2] == 's'){
wt.insert(k);
}
else if(str[2] == 'i'){
int ans = wt.qmin(k);
printf("%d\n", ans^k);
}
else {
int ans = wt.qmax(k);
printf("%d\n", ans^k);;
}
}
}
return 0;
}
ACdream1063——平衡树的更多相关文章
- [BZOJ3223]Tyvj 1729 文艺平衡树
[BZOJ3223]Tyvj 1729 文艺平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区 ...
- [BZOJ3224]Tyvj 1728 普通平衡树
[BZOJ3224]Tyvj 1728 普通平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个) ...
- BZOJ3223: Tyvj 1729 文艺平衡树 [splay]
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3595 Solved: 2029[Submit][Sta ...
- [普通平衡树treap]【学习笔记】
3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 9046 Solved: 3840[Submit][Sta ...
- BZOJ 3224: Tyvj 1728 普通平衡树
3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 9629 Solved: 4091[Submit][Sta ...
- BZOJ 3223: Tyvj 1729 文艺平衡树
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3628 Solved: 2052[Submit][Sta ...
- 【Splay】bzoj3223-Tyvj1729文艺平衡树
一.题目 Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 ...
- hiho #1329 : 平衡树·Splay
#1329 : 平衡树·Splay 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:小Hi,上一次你跟我讲了Treap,我也实现了.但是我遇到了一个关键的问题. ...
- bzoj 3196: Tyvj 1730 二逼平衡树
#include<cstdio> #include<ctime> #include<cstdlib> #include<iostream> #defin ...
随机推荐
- Android应用内语言切换实现(转)
使用Java反射机制 IActivityManager与ActivityManagerNative都是非公开类,使用Java反射去调用其中的方法. 第一步.使用Android开放的api更改Confi ...
- ntp服务器搭建与客户端设置
服务器对时间要求非常严格,linux服务器文件的生成,日志,以及数据库的连接都是根据时间的逻辑 进行任务处理,如果时间不同步,那么,处理的任务,以及出问题的分析日志,时间不对,很难分析 直接更改lin ...
- 自然语言0_nltk中文使用和学习资料汇总
http://blog.csdn.net/huyoo/article/details/12188573 官方数据 http://www.nltk.org/book/ Natural Language ...
- eclipse下遇到 无法解析类型 javax.servlet.http.HttpServletRequest
参考:http://bbs.csdn.net/topics/370187655?page=1 java.lang.Error: 无法解析的编译问题: 无法解析类型 javax.servlet.ht ...
- Java——新IO 通道
import java.io.File; import java.io.FileOutputStream; import java.nio.ByteBuffer; import java.nio.ch ...
- SQL 使用小记
1. case语句 示例 select id, name, case user_role then "管理员" then "未注册用户" then " ...
- Maven打包可执行jar
参考文献:http://blog.csdn.net/xiao__gui/article/details/47341385 方法:使用assembly插件,生成的jar包名为xxx-jar-with-d ...
- 隔离click事件
有一些应用,不需要我们自己的定义的click函数,例如: $(document).on('click', '#inp', function(e){ alert('hello world!'); }); ...
- OpenGL Registry
https://www.opengl.org/registry/ https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api ...
- inpyt 按钮变透明 边框
变透明: .btn{width: 80px;height: 36px;margin-left: 22px;border: none;cursor: pointer;background: none;}