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——平衡树的更多相关文章

  1. [BZOJ3223]Tyvj 1729 文艺平衡树

    [BZOJ3223]Tyvj 1729 文艺平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区 ...

  2. [BZOJ3224]Tyvj 1728 普通平衡树

    [BZOJ3224]Tyvj 1728 普通平衡树 试题描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个) ...

  3. BZOJ3223: Tyvj 1729 文艺平衡树 [splay]

    3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3595  Solved: 2029[Submit][Sta ...

  4. [普通平衡树treap]【学习笔记】

    3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 9046  Solved: 3840[Submit][Sta ...

  5. BZOJ 3224: Tyvj 1728 普通平衡树

    3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 9629  Solved: 4091[Submit][Sta ...

  6. BZOJ 3223: Tyvj 1729 文艺平衡树

    3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3628  Solved: 2052[Submit][Sta ...

  7. 【Splay】bzoj3223-Tyvj1729文艺平衡树

    一.题目 Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 ...

  8. hiho #1329 : 平衡树·Splay

    #1329 : 平衡树·Splay 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:小Hi,上一次你跟我讲了Treap,我也实现了.但是我遇到了一个关键的问题. ...

  9. bzoj 3196: Tyvj 1730 二逼平衡树

    #include<cstdio> #include<ctime> #include<cstdlib> #include<iostream> #defin ...

随机推荐

  1. excel2013添加坐标轴名称label

    图画好了,x.y轴没有名称,怎么办那 点击左上角有个---添加图标元素----里面有轴标题应该就是

  2. elasticsearch scroll api--jestclient invoke

    @Test public void testScroll(){ JestClientFactory factory = new JestClientFactory(); factory.setHttp ...

  3. 利用jquery实现网站中对应栏目下面内容切换效果。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. JS实现的一个query字符串转Json格式数据的方法

    输入字符串的格式是 a=1&b=2&c=3 $.par2Json = function (string, overwrite) { var obj = {}, pairs = stri ...

  5. php上传$_FILES 无法取值

    无法取值的主要原因在form. 代码 <form method="post" action="****" name="theForm" ...

  6. 在页面头部<!DOCTYPE html ....> 前面不能有任何输出

    <!-- 这里不能有任何输出,注释也不行 --><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...

  7. php 下载文件的函数

    通过函数完成下载文件的PHP功能代码 function download($url, $filename) { // 获得文件大小, 防止超过2G的文件, 用sprintf来读 $filesize = ...

  8. 升级10.11.6后CocoaPods的坑,之前10.11.4已经安装好的,居然没了Failed to locate Homebrew!

    升级10.11.6后CocoaPods的坑,之前10.11.4已经安装好的,居然没了,用命令 sudo gem install cocoapod 装不上,换 sudo gem install -n/u ...

  9. C#实现Excel模板导出和从Excel导入数据

    午休时间写了一个Demo关于Excel导入导出的简单练习 1.窗体 2.引用office命名空间 添加引用-程序集-扩展-Microsoft.Office.Interop.Excel 3.封装的Exc ...

  10. jQuery中的.bind()、.live()和.delegate()之间区别分析

    jQuery中的.bind()..live()和.delegate()之间区别分析,学习jquery的朋友可以参考下.   DOM树   首先,可视化一个HMTL文档的DOM树是很有帮助的.一个简单的 ...