CDOJ 1060 秋实大哥与快餐店 字典树 水题
Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu
System Crawler (2016-04-24)
Description
朝为田舍郎,暮登天子堂。秋实大哥从小就怀抱有远大的理想,所以他开了一家快餐店。
秋实大哥根据菜的口感,给每一道菜一个唯一的CID,同时对于前来的客人,根据他们的口味喜好,秋实大哥会给每一个客人一个
PID。
对于一个标号为PID的客人,他对标号为
CID的菜的喜爱程度为
PID∧CID(
∧表示按位异或),该值越大表示越喜欢。
秋实大哥实在太忙了,现在他需要你来帮忙照看一下他的店铺。
Input
第一行包含一个整数n,表示秋实大哥的餐馆内现在有
n道菜。
接下来一行包含n个整数,分别表示每一道菜的
CID。
接下来一行包含一个整数m,表示接下来发生了
m件事。
接下来的m行,每一行为以下两种事件之一:
0 c : 表示秋实大哥最新研制出一道标号为c的菜
1 p : 表示来了一位标号为p的客人,请你在已有的菜中找出一道他最喜爱的菜
,
1≤n,m≤100000,
,
0≤PID,CID≤1000000。
Output
对于每一个1
p事件输出一个整数,表示该客人最喜欢的菜的标号。
Sample Input
1
1
3
1 1
0 2
1 1
Sample Output
1
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <set>
using namespace std;
typedef long long ll;
typedef unsigned long long Ull;
#define MM(a,b) memset(a,b,sizeof(a));
const double eps = 1e-;
const int inf = 0x3f3f3f3f;
const double pi=acos(-);
const int maxn=;
struct data{
int l,r,id,flag;
}tree[(<<)+]; void insertc(int x)
{
int ptr=;
for(int i=;i>=;i--)
{
if(x&(<<i))
{
tree[ptr].r=;
ptr=*ptr+;
}
else
{
tree[ptr].l=;
ptr=*ptr;
}
}
tree[ptr].id=x;
}
//在字典树中插入字符
int findc(int x)
{
int ptr=;
for(int i=;i>=;i--)
{
if(x&(<<i))
{
if(tree[ptr].l)
ptr=*ptr;
else ptr=*ptr+;
}
else
{
if(tree[ptr].r)
ptr=*ptr+;
else ptr=*ptr;
}
}
return tree[ptr].id;
}
//查找字符
int main()
{
int n,m;
while(~scanf("%d",&n))
{
MM(tree,);
int x,y;
for(int i=;i<=n;i++)
{
scanf("%d",&x);
insertc(x);
} scanf("%d",&m);
for(int i=;i<=m;i++)
{
scanf("%d %d",&x,&y);
if(!x) insertc(y);
else printf("%d\n",findc(y));
}
}
return ;
}
分析:字典树处理,注意开的数组的大小,是将1e6用trie树存储,转化成二进制2^20>=1e6,
比如(2^20)1000...(20个0),
CDOJ 1060 秋实大哥与快餐店 字典树 水题的更多相关文章
- 2015 UESTC 数据结构专题C题 秋实大哥与快餐店 字典树
C - 秋实大哥与快餐店 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 ...
- CDOJ 1057 秋实大哥与花 线段树 区间更新+区间查询
链接: I - 秋实大哥与花 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Submit ...
- UESTC - 1057 秋实大哥与花 线段树模板题
http://acm.uestc.edu.cn/#/problem/show/1057 题意:给你n个数,q次操作,每次在l,r上加上x并输出此区间的sum 题解:线段树模板, #define _CR ...
- UESTC_秋实大哥与快餐店 2015 UESTC Training for Data Structures<Problem C>
C - 秋实大哥与快餐店 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Sub ...
- D - 秋实大哥与快餐店
秋实大哥与快餐店 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
- hdu1305 字典树水题
题意: 给你一些字符串,然后问你他们中有没有一个串是另一个串的前缀. 思路: 字典树水题,(这种水题如果数据不大(这个题目不知道大不大,题目没说估计不大),hash下也行,把每个 ...
- CDOJ 1070 秋实大哥打游戏 带权并查集
链接 F - 秋实大哥打游戏 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Submit ...
- CDOJ 1069 秋实大哥去打工 单调栈 下标处理
E - 秋实大哥去打工 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Submit St ...
- CDOJ 1059 秋实大哥与小朋友 STL(set)+离散化+BIT区间更新单点查询
链接: A - 秋实大哥与小朋友 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Subm ...
随机推荐
- JS 截取字符的方法
substr() 方法 substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符. stringObject.substr(start,length) start:必需.要抽取的 ...
- [转帖]linux文件描述符文件/etc/security/limits.conf
linux文件描述符文件/etc/security/limits.conf https://blog.csdn.net/fanren224/article/details/79971359 需要多学习 ...
- POJ - 2421 Constructing Roads(最小生成树&并查集
There are N villages, which are numbered from 1 to N, and you should build some roads such that ever ...
- java io 文件下载功能
一. @RequestMapping(value = "/download/{filename}") public void downloadFile(HttpServletReq ...
- js apply与call的用法与区别
apply和call function Person(c, d) { return this.a + this.b + c + d } var o = {a: 1, b: 2} Person.cal ...
- 关于在docker中配置elasticsearch容器的方法
一.关于docker的安装,注意几点 1.如果系统是Win10家庭版,是没有Hyper-V的,所以无法安装docker(运行docker安装包会报错),为此docker官网提供的解决方法是安装dock ...
- vue 简介 vue 项目 组件
1. 概念 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.能够为复杂的单页应用提供驱动. 2. 用法 2.1 声明式渲染 2.1.1 改变文本 {{ m ...
- 【应用容器引擎】Docker笔记
一.Docker是什么? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化.它是一个轻量级容器技 ...
- spring boot基础学习教程
Spring boot 标签(空格分隔): springboot HelloWorld 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新 ...
- Python控制语句执行流程
if语句: if<条件>:#条件之后必须有“:”. <语句> if语句的三元运算符: <表达式1>if<条件>else<表达式2>:其语义 ...