写的很丑的字典树。听王大神的话  需要改进。

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std; struct nn
{
int zero;
int one; }node[]; int findd[]; int main()
{
int sb;
scanf("%d", &sb);
while (sb--)
{
int n, i, j, ii, t, tot;
scanf("%d", &n);
char s[]; int ff; for (i = ; i<; i++)
{
node[i].zero = -;
node[i].one = -;
} int jiedian = ;
for (i = ; i<n; i++)
{
scanf("%s", s);
if (strcmp("insert", s) == )
{
tot = ;
scanf("%d", &t);
while (t)
{
findd[tot] = t % ;
t = t / ;
tot++;
}
while ()
{
if (tot == ) break;
findd[tot] = ;
tot++;
}
int bianli = ;
for (ii = ; ii >= ; ii--)
{
if (findd[ii] == )
{
if (node[bianli].zero == -)
{
node[bianli].zero = jiedian;
jiedian++;
}
bianli = node[bianli].zero;
}
else if (findd[ii] == )
{
if (node[bianli].one == -)
{
node[bianli].one = jiedian;
jiedian++;
}
bianli = node[bianli].one;
}
}
}
else if (strcmp("qmin", s) == )
{
scanf("%d", &t);
tot = ;
while (t)
{
findd[tot] = t % ;
t = t / ;
tot++;
}
while ()
{
if (tot == ) break;
findd[tot] = ;
tot++;
}
int bianli = ;
int anss = ;
for (ii = ; ii >= ; ii--)
{
if (findd[ii] == )
{
if (node[bianli].one != -)
{
anss = anss + ;
bianli = node[bianli].one;
}
else if (node[bianli].zero != -)
{
anss = anss + ( << ii);
bianli = node[bianli].zero;
}
}
else if (findd[ii] == )
{
if (node[bianli].zero != -)
{
anss = anss + ;
bianli = node[bianli].zero;
}
else if (node[bianli].one != -)
{
anss = anss + ( << ii);
bianli = node[bianli].one;
}
}
}
printf("%d\n", anss);
}
else if (strcmp("qmax", s) == )
{
scanf("%d", &t);
tot = ;
while (t)
{
findd[tot] = t % ;
t = t / ;
tot++;
}
while ()
{
if (tot == ) break;
findd[tot] = ;
tot++;
}
int bianli = ;
int anss = ;
for (ii = ; ii >= ; ii--)
{
if (findd[ii] == )
{
if (node[bianli].zero != -)
{
anss = anss + ( << ii);
bianli = node[bianli].zero;
}
else if (node[bianli].one != -)
{
anss = anss + ;
bianli = node[bianli].one;
}
}
else if (findd[ii] == )
{
if (node[bianli].one != -)
{
anss = anss + ( << ii);
bianli = node[bianli].one;
}
else if (node[bianli].zero != -)
{
anss = anss + ;
bianli = node[bianli].zero;
}
}
}
printf("%d\n", anss);
}
}
}
return ;
}

ACdream 1063 平衡树的更多相关文章

  1. ACdream 1063 字典树

    ACdream 1063 字典树 平衡树 神奇的cxlove有一颗平衡树,其树之神奇无法用语言来描述 OrzOrz. 这棵树支持3种操作: 1.加入一个数到树中,维护平衡树的合法性: 2.给一个数X, ...

  2. hdu 4825 && acdream 1063 01字典树异或问题

    题意: 给一个集合,多次询问,每次给一个k,问你集合和k异或结果最大的哪个 题解: 经典的01字典树问题,学习一哈. 把一个数字看成32位的01串,然后查找异或的时候不断的沿着^为1的路向下走即可 # ...

  3. Acdream 1738 世风日下的哗啦啦族I 树套树

    世风日下的哗啦啦族I Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1738 Descri ...

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. TypeScript开发ReactNative之fetch函数的提示问题

    使用TypeScript开发ReactNative时,发现在类中调用 fetch 函数时IDE可能会提示找不到,无法加载,特别是当类中存在同名的 fetch 成员方法时更是郁闷了,虽然程序是可以执行的 ...

  2. 试图解释下ERP

    ERP,字面的意思就是企业资源规划.但现在基本上是企业信息系统的统称,过去叫MIS.我们就是有这个本事,不管什么高大上的事物,很快就会做的很烂. 你可以这样理解ERP. 现在来了个订单,你需要回答下面 ...

  3. 将List 中的ConvertAll的使用:List 中的元素转换,List模型转换, list模型转数组

    一,直接入代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using S ...

  4. # 关于string

    关于string 头文件 #include <string> using std::string; string定义和初始化 string s1; string s2(s1); strin ...

  5. HDU-------An Easy Task

    An Easy Task Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  6. 记JavaScript的入门学习(三)

    2016.12.6晚上十点半完成JavaScript的第二章学习,看了点第三章的开头总述,都说原生js每一个知识点都可以分分钟钟让你放弃,而我在努力探索着.月末的时候就回家放假了,希望在家也可以有个小 ...

  7. 序列化与反序列化总结(Serializable和Parcelable)

    序列化是指将对象的状态信息转换为可以存储或传输的形式的过程. 在Java中创建的对象,只要没有被回收就可以被复用,但是,创建的这些对象都是存在于JVM的堆内存中,JVM处于运行状态时候,这些对象可以复 ...

  8. [Q]如何将图纸打印为黑白的及设置打印样式

    若只是想打印黑白图形,则在“打印样式列表”选择“monchrome.ctb”打印样式即可. 设置其它打印样式:在CAD批量打图精灵主界面下点设置打印样式图标,如下图: 在打开的资源管理器中选择您想要更 ...

  9. jffs2reset 实现分析

    在脚本 reset2default中看到如下内容: #!/usr/bin/lua local hwm = require "hwm" hwm.myexec("jffs2r ...

  10. 杭电OJ--自行车计速器

    Biker's Trip Odometer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Ot ...