bzoj3685普通van Emde Boas树 线段树
3685: 普通van Emde Boas树
Time Limit: 9 Sec Memory Limit: 128 MB
Submit: 1932 Solved: 626
[Submit][Status][Discuss]
Description
设计数据结构支持:
1 x 若x不存在,插入x
2 x 若x存在,删除x
3 输出当前最小值,若不存在输出-1
4 输出当前最大值,若不存在输出-1
5 x 输出x的前驱,若不存在输出-1
6 x 输出x的后继,若不存在输出-1
7 x 若x存在,输出1,否则输出-1
Input
第一行给出n,m 表示出现数的范围和操作个数
接下来m行给出操作
n<=10^6,m<=2*10^6,0<=x<n
Output
Sample Input
10 11
1 1
1 2
1 3
7 1
7 4
2 1
3
2 3
4
5 3
6 2
Sample Output
1
-1
2
2
2
-1
HINT
Source
By Zky
常规操作
要用zkw减小常数,但我貌似卡过了
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #define ls u<<1 #define rs ls|1 #define ll long long #define N 1000050 using namespace std; int n,m,sum[N<<2],vis[N]; void pushup(int u){sum[u]=sum[ls]+sum[rs];} int findpos(int u,int l,int r,int x){if(!sum[u])return 0;if(l==r)return sum[u];int mid=l+r>>1;if(x<=mid)return findpos(ls,l,mid,x);return findpos(rs,mid+1,r,x)+sum[ls]; } void update(int u,int L,int R,int p,int val){if(L==R){sum[u]=val;return;}int mid=L+R>>1;if(p<=mid)update(ls,L,mid,p,val);else update(rs,mid+1,R,p,val);pushup(u); } int query(int u,int l,int r,int p){if(l==r)return l;int mid=l+r>>1;if(p<=sum[ls])return query(ls,l,mid,p);return query(rs,mid+1,r,p-sum[ls]); } int main(){scanf("%d%d",&n,&m);int op,x;while(m--){scanf("%d",&op);if(op!=3&&op!=4)scanf("%d",&x);if(op==1)update(1,0,n-1,x,1),vis[x]=1;if(op==2)update(1,0,n-1,x,0),vis[x]=0;if(op==3){if(sum[1]==0)puts("-1");else printf("%d\n",query(1,0,n-1,1));}if(op==4){if(sum[1]==0)puts("-1");else printf("%d\n",query(1,0,n-1,sum[1]));}if(op==5){int p=findpos(1,0,n-1,x);if(vis[x])p--;if(p<=0)puts("-1");else printf("%d\n",query(1,0,n-1,p));}if(op==6){int p=findpos(1,0,n-1,x);p++;if(p>sum[1])puts("-1");else printf("%d\n",query(1,0,n-1,p));}if(op==7){if(vis[x])puts("1");else puts("-1");}}return 0; }
转载于:https://www.cnblogs.com/wsy01/p/8064967.html
bzoj3685普通van Emde Boas树 线段树相关推荐
- BZOJ3685普通van Emde Boas树
3685: 普通van Emde Boas树 Time Limit: 9 Sec Memory Limit: 128 MB Submit: 962 Solved: 319 Description 设计 ...
- van Emde Boas Trees(vEB树)(Introduction to Algorithms, 算法导论,CLRS)学习笔记
van Emde Boas Trees 1. Predecessor search/ordered sets predecessor: return the nearest left neighbor ...
- BZOJ3685 普通 van Emde Boas 树 题解(vEB 树模板题)
(题目描述略) vEB 树的模板题,似乎用 zkw 线段树也可以过. 因为 vEB 树的建树过程花费大量时间,所以若用 STL 中的 vector 开不定长数组,其常数之大难免有超时的危险.解决方法是 ...
- 【bzoj3685】普通van Emde Boas树 线段树
普通van Emde Boas树 Time Limit: 9 Sec Memory Limit: 128 MB Submit: 1969 Solved: 639 [Submit][Status][ ...
- BZOJ 3685: 普通van Emde Boas树( 线段树 )
建颗权值线段树就行了...连离散化都不用... 没加读入优化就TLE, 加了就A掉了...而且还快了接近1/4.... ---------------------------------------- ...
- bzoj 3685 普通van Emde Boas树(坑)
3685: 普通van Emde Boas树 Time Limit: 9 Sec Memory Limit: 128 MB Submit: 1758 Solved: 563 [Submit][Stat ...
- 算法导论读书笔记(20)van Emde Boas树
第五部分 高级数据结构 第20章 van Emde Boas树 van Emde Boas树支持优先队列操作以及一些其他操作,每个操作最坏情况运行时间为O(lglgn).而这种数据结构限制关键字必须为 ...
- van Emde Boas 树 数据结构说解
van Emde Boas 树的定义 直观上看,vEB 树保存了一个有序的集合,并支持以 O(lglgn) 的时间复杂度在 vEB 树上进行最小最大值查询.单值存在性查询.单值前驱后继查询.单值插入维 ...
- 算法导论-van Emde Boas树
van Emde Boas树 van Emde Boas树中文名不知道,所以暂且叫它v树吧.v树是一种数据结构,和二叉树.红黑树类似.一种数据结构被创建出来,肯定有其特别的优点,v树的优点就是实现数据 ...
最新文章
- 数字双胞胎技术和物联网如何帮助企业取得成功
- HTTPPost/AFNetWorking/JSONModel/NSPredicate
- MySQL查询获取行号rownum
- 多索引表 (4)multi_index.hpp源代码
- 面试官:Thread.sleep(0) 有什么用?
- 家用、商用、工业交换机的用途与区别
- linux静默删除文件夹,Linux常用命令10 - unzip
- BugkuCTF-MISC题FileStoragedat
- DHCP服务器的的操作心得
- Android提升篇系列:Activity recreate(Activity 重新创建/自我恢复)机制(一)
- SQL 2016 AlwaysOn 无域AlwaysOn配置要点
- fpga一个按键控制跑马灯启停_车上这些开关都认识吗?一次带你认清车上按键...
- Python-移位密码、仿射变换解密
- scrapy 官方文档(入门必备)
- 信号强度和dBm的对应关系
- centos7.X版本如何下载网络流量实时监控工具iftop
- codeforces 727E. Games on a CD
- PostgreSQL安装详细步骤(linux)
- 细思极恐!家中电视机正在监视所有联网设备
- iOS 11封杀32位应用,不少开发者宁愿放弃
热门文章
- 互联网公司招聘--爱奇艺--互娱产品运营--2016年笔试题
- Django计算机毕业设计酒店入住管理系统(程序+lw)Python
- 磁云数字:供应链金融-支付系统演进过程
- 数据结构课后答案 c语言版
- 【持续更新】威胁情报 | 情报分析(主要是APT)信息源
- 计算机数据链路层协议之HDLC和PPP协议
- F1V3.0-图形-地图模块主要对象说明
- 树莓派编写html,在树莓派3b or 3a or 4a or 4b上搭建OpenWebRX
- wps上下括号怎么打出来_【wps大括号怎么打出来】wps大括号怎么打两行字_wps大括号怎么打...
- powerbi 无法将修改保存到服务器,解决Power BI错误基本版本不能为负数