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. zabbix 3.0快速安装简介(centos 6)

    zabbix快速安装 系统版本:centos 6 1.yum源配置和zabbix.msyql安装 rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3. ...

  2. springMVC的注解@RequestParam与@PathVariable的区别

    1.在SpringMVC后台控制层获取参数的方式主要有两种, 一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取. ...

  3. PHP 基本语法,字符串处理,正则

    <?php //注释语法 /*多行注释*/  输出语法 Echo "hello","worle";         //可以输出多个字符串 Print   ...

  4. JQuery------$.getJSON()方法的使用

    html(../Home/Index.cshtml) <body> <button class="Btn">按钮</button> </b ...

  5. JQuery------$.ajax()的使用方法

    菜鸟教程地址: http://www.runoob.com/jquery/ajax-ajax.html html(../Home/Index.cshtml) <body> <butt ...

  6. 自然语言12_Tokenizing Words and Sentences with NLTK

    https://www.pythonprogramming.net/tokenizing-words-sentences-nltk-tutorial/ # -*- coding: utf-8 -*- ...

  7. Spring MVC学习笔记——给Controller和视图传值

    一.给Controller传值,值将显示在控制台 1.第一种:使用@RequestParam,改HelloController.java //RequestMapping表示用哪一个url来对应 @R ...

  8. 和安全有关的那些事(非对称加密、数字摘要、数字签名、数字证书、SSL、HTTPS及其他)

    转自http://blog.csdn.net/bluishglc/article/details/7585965 对于一般的开发人员来说,很少需要对安全领域内的基础技术进行深入的研究,但是鉴于日常系统 ...

  9. Transmission 设置硬盘缓存

          1.找到settings.json 调置文件.此文件是transmission的配置文件.一般存放在  /home/用户名/.config/transmission 目录下.       ...

  10. php构造函数extends

    extends的继续关系 page继承Dapta:也就是page拥有data的所有功能. <?php class Data{ function f(){ "; } } class Pa ...