D - 秋实大哥与快餐店
秋实大哥与快餐店
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
朝为田舍郎,暮登天子堂。秋实大哥从小就怀抱有远大的理想,所以他开了一家快餐店。
秋实大哥根据菜的口感,给每一道菜一个唯一的CIDCID,同时对于前来的客人,根据他们的口味喜好,秋实大哥会给每一个客人一个PIDPID。
对于一个标号为PIDPID的客人,他对标号为CIDCID的菜的喜爱程度为PID∧CIDPID∧CID(∧∧表示按位异或),该值越大表示越喜欢。
秋实大哥实在太忙了,现在他需要你来帮忙照看一下他的店铺。
Input
第一行包含一个整数nn,表示秋实大哥的餐馆内现在有nn道菜。
接下来一行包含nn个整数,分别表示每一道菜的CIDCID。
接下来一行包含一个整数mm,表示接下来发生了mm件事。
接下来的mm行,每一行为以下两种事件之一:
0 c : 表示秋实大哥最新研制出一道标号为c的菜
1 p : 表示来了一位标号为p的客人,请你在已有的菜中找出一道他最喜爱的菜
1≤n,m≤1000001≤n,m≤100000,0≤PID,CID≤10000000≤PID,CID≤1000000。
Output
对于每一个11 pp事件输出一个整数,表示该客人最喜欢的菜的标号。
Sample input and output
| Sample Input | Sample Output |
|---|---|
1 |
1 |
既然是求异或值,就把CID转换成二进制加入字典树,在把PID每一位取反转换成二进制在字典树里跑一遍就可以了
#pragma GCC diagnostic error "-std=c++11"
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector> using namespace std; struct Tire{
struct Tire *next[];
Tire() {next[] = next[] = NULL; }
}; Tire *root; void Insert(int x){
Tire *p = root;
for(int i = ; i >= ; i--){
int c = (x >> i) & ;
if(p -> next[c] == NULL)
p -> next[c] = new Tire;
p = p -> next[c];
}
} int Query(int x){
x = ~x;
Tire *p = root;
int ans = ;
for(int i = ; i >= ; i--){
int c = (x >> i) & ;
ans <<= ;
if( c ){
if(p -> next[]){
p = p -> next[];
ans++;
}else p = p -> next[];
}else{
if(p -> next[]) p = p -> next[];
else{
p = p -> next[];
ans++;
}
}
}
return ans;
}
int main(){
int n, x, m, c;
root = new Tire;
scanf("%d", &n);
for(int i = ; i<= n; i++){
scanf("%d", &x);
Insert( x );
}
scanf("%d", &m);
for(int i = ; i <= m; i++){
scanf("%d %d", &c, &x);
if(c == ) Insert( x );
else printf("%d\n", Query(x));
}
}
D - 秋实大哥与快餐店的更多相关文章
- UESTC_秋实大哥与快餐店 2015 UESTC Training for Data Structures<Problem C>
C - 秋实大哥与快餐店 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Sub ...
- 2015 UESTC 数据结构专题C题 秋实大哥与快餐店 字典树
C - 秋实大哥与快餐店 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 ...
- CDOJ 1060 秋实大哥与快餐店 字典树 水题
题目链接 B - 秋实大哥与快餐店 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Sub ...
- UESTC_秋实大哥与连锁快餐店 2015 UESTC Training for Graph Theory<Problem A>
A - 秋实大哥与连锁快餐店 Time Limit: 9000/3000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) S ...
- CDOJ 1146 A - 秋实大哥与连锁快餐店 最小生成树 Prim算法 稠密图
题目链接 A - 秋实大哥与连锁快餐店 Time Limit:3000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu S ...
- UESTC_秋实大哥与时空漫游 2015 UESTC Training for Graph Theory<Problem C>
C - 秋实大哥与时空漫游 Time Limit: 4500/1500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Su ...
- uestc 1073 秋实大哥与线段树 Label:线段树
秋实大哥与线段树 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) “学习本无底, ...
- UESTC 1074 秋实大哥搞算数 栈模拟
秋实大哥搞算数 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- UESTC_秋实大哥带我飞 2015 UESTC Training for Graph Theory<Problem B>
B - 秋实大哥带我飞 Time Limit: 300/100MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
随机推荐
- js多种方法取数组的最后一个元素
一: pop()方法 pop()方法,删除数组最后一个并返回该元素 利用这个方法可以取到数组的最后一个,同理shift()可以取到数组的第一个(shift()删除数组第一个并返回该元素) var ar ...
- <meta>标签 的一些用法
网上找到的一些资料:自己留着! 链接 :http://www.wzsky.net/html/Website/htmlcss/116165.html meta是html语言head区的一个辅助性标签.也 ...
- Spring boot之配置server信息
知识点: 1.修改端口号 2.修改context-path 3.其它配置说明 配置端口号: Spring boot 默认端口是8080, 如果想要进行更改的话, 只需要修改applicatoin.pr ...
- 项目配置 xml文件时 报错提示(The reference to entity "useSSL" must end with the ';' delimiter.)
这次在配置xml文件时,出现错误提示( The reference to entity “useSSL” must end with the ‘;’ delimiter.) 报错行为 <prop ...
- oracle存储过程及sql优化-(一)
本篇主要介绍存储过程的结构 先简单介绍下: oracle存储过程与函数不同,oracle函数和存储过程都可以有多个输入,但是函数一般只有一个输出,而oracle可以有多个输出且与输入 ...
- MySQL5.7忘记root密码-手动修改密码教程
https://blog.csdn.net/greywolf0824/article/details/80215199
- C++ TODO __fastcall
C++ TODO __fastcall int __fastcall init_keys2(char *a1, char *a2) { char *v2; // r6 char *v3; // r5 ...
- CircleCi 不更新某个分支的两种方法
概述 今天我发现我的所有项目的 CircleCi 部署全部都会更新 gh-pages 分支.找了好久,终于找到了不更新的方法.于是我总结了一下,记录下来,供以后开发时参考,相信对其他人也有用. onl ...
- Selenium 2自动化测试实战18(上传文件)
一.上传文件 上传文件是比较常见的web功能之一,但WebDriver没有提供专门用于上传的方法. 一般web页面的上传功能的操作需要单击“上传”按钮后打开本地的Window窗口,从窗口选择本地文件进 ...
- nmon(linux监视)
nmon –f –t –r test –s 10 –c 60 即为10分钟 上面命令的含义是:-f :按标准格式输出文件名称:<hostname>_YYYYMMDD_HHMM.nmon-t ...