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 ...
随机推荐
- JavaScript事件类型
JavaScript事件类型 Web浏览器中可能发生的事件有很多类型.这里我将主要将下面几种常用的事件类型: UI事件 焦点事件 鼠标与滚轮事件 键盘与文本事件 复合事件 变动事件 HTML5事件 设 ...
- mybatis 传递参数的方法总结
有三种mybatis传递参数的方式: 第一种 mybatis传入参数是有序号的,可以直接用序号取得参数 User selectUser(String name,String area); 可以在xml ...
- uC/OS-II队列(OS_q)块
/*************************************************************************************************** ...
- 下载百度上的图片C#——输入名字就可以下载
using System; using System.Collections.Generic; using System.Data; using System.Configuration; using ...
- C#--API
C#中调用API 介绍 API( Application Programming Interface ),我想大家不会陌生,它是我们Windows编程的常客,虽然基于.Net平台的C#有了强大的类库, ...
- VIM for Python and Django Development
VIM for Python and Django Development VIM-PyDjango created by Programmer for Programmer who work on ...
- Redis学习——SDS字符串源码分析
0. 前言 这里对Redis底层字符串的实现分析,但是看完其实现还没有完整的一个概念,即不太清楚作者为什么要这样子设计,只能窥知一点,需要看完redis如何使用再回头来体会,有不足之处还望告知. 涉及 ...
- Rendering Paths
渲染路径 Rendering Paths http://game.ceeger.com/Manual/RenderingPaths.html 延迟光照渲染路径的细节 Deferred Lighting ...
- Semantic ui 学习笔记 持续更新
这个semantic 更新版本好快~ 首先是代码的标识<code></code> 具体样式就是红框这样的 圈起来代码感觉不错 不过要在semantic.css里在加上如下样式~ ...
- centos 7.0安装花生壳
没有wget 先下载get 命令 yum -y install wget 下载位置/usr/local/src 解压目录 /usr/local/bin/phddns-2.0.6.x86_64 1.下 ...