题意:给出三种操作
  0 e:将e放入容器中
  1 e:将e从容器中删除,若不存在,则输出No Elment!
  2 a k:搜索容器中比a大的第k个数,若不存在,则输出Not Find!

思路:树状数组+二分搜索,具体见代码吧。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
/*
AC
树状数组+二分搜索
题意:给出三种操作
0 e:将e放入容器中
1 e:将e从容器中删除,若不存在,则输出No Elment!
2 a k:搜索容器中比a大的第k个数,若不存在,则输出Not Find! 思路:树状数组+二分搜索,具体见代码吧。
*/
using namespace std;
const int maxn=;
int m;
int c[maxn]; //树状数组
int vis[maxn]; //vis[i]表示元素i的个数 int lowbit(int x){
return x&(-x);
} void update(int i,int v){
while(i<maxn){
c[i]+=v;
i+=lowbit(i);
}
} //sum(i)表示容器中元素大小在1~i之间的个数
int sum(int i){
int res=;
while(i){
res+=c[i];
i-=lowbit(i);
}
return res;
} //二分搜索整个序列中第k大的数
int binarySearch(int k){
int l=,r=maxn-,mid,tmp;
while(r-l>){
mid=(l+r)>>;
tmp=sum(mid);
if(k<=tmp)
r=mid;
else
l=mid;
}
return r;
}
int main()
{
int op,e,k;
int n; //目前存放的元素个数
while(scanf("%d",&m)!=EOF){
memset(vis,,sizeof(vis));
memset(c,,sizeof(c));
n=;
for(int i=;i<=m;i++){
scanf("%d",&op);
if(op==){
scanf("%d",&e);
vis[e]++;
update(e,);
n++;
}
else if(op==){
scanf("%d",&e);
if(!vis[e])
printf("No Elment!\n");
else{
vis[e]--;
update(e,-);
n--;
}
}
else{
scanf("%d%d",&e,&k);
int t=sum(e); // 目前<=e的元素有t个,转化成搜索第t+k个大的元素
//若t+k直接大于n,则不存在该元素
if(t+k>n)
printf("Not Find!\n");
else{
k=k+t;
printf("%d\n",binarySearch(k));
}
}
}
}
return ;
}

HDU 2852 KiKi's K-Number(树状数组+二分搜索)的更多相关文章

  1. HDU 2852 KiKi's K-Number(离线+树状数组)

    题目链接 省赛训练赛上一题,貌似不难啊.当初,没做出.离线+树状数组+二分. #include <cstdio> #include <cstring> #include < ...

  2. HDU 2852 KiKi's K-Number【 树状数组 二分 】

    题意:给出m个操作,0:是增加一个数,add(x,1)1:是删除一个指定的数,这个是看sum(x) - sum(x-1)是否为0,为0的话则不存在,不为0的话,则add(x,-1)2:是查询比x大的数 ...

  3. hdu 5869 区间不同GCD个数(树状数组)

    Different GCD Subarray Query Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  4. hdu 6203 ping ping ping(LCA+树状数组)

    hdu 6203 ping ping ping(LCA+树状数组) 题意:给一棵树,有m条路径,问至少删除多少个点使得这些路径都不连通 \(1 <= n <= 1e4\) \(1 < ...

  5. HDU 1394 Minimum Inversion Number ( 树状数组求逆序数 )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 Minimum Inversion Number                         ...

  6. hdu 2852 KiKi's K-Number (线段树)

    版权声明:本文为博主原创文章,未经博主允许不得转载. hdu 2852 题意: 一个容器,三种操作: (1) 加入一个数 e (2) 删除一个数 e,如果不存在则输出 No Elment! (3) 查 ...

  7. HDU 1394 Minimum Inversion Number (树状数组求逆序对)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题目让你求一个数组,这个数组可以不断把最前面的元素移到最后,让你求其中某个数组中的逆序对最小是多 ...

  8. HDU 1394 Minimum Inversion Number (树状数组 && 规律 && 逆序数)

    题意 : 有一个n个数的数列且元素都是0~n-1,问你将数列的其中某一个数及其前面的数全部置到后面这种操作中(比如3 2 1 0中选择第二个数倒置就产生1 0 3 2)能产生的最少的逆序数对是多少? ...

  9. HDUOJ-----2852 KiKi's K-Number(树状数组+二分)

    KiKi's K-Number Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

随机推荐

  1. 删除字符串第一个byte

    删除字符串第一个byte   一种方式:   char * mag; char buff[1000]; char number; memcpy((char *)msg,buff,len); strnc ...

  2. chattr 与 lsattr 命令详解

    PS:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的li ...

  3. WIN服务器出现 php-cgi.exe - FastCGI 进程意外退出

    既然是不能解析PHP,那就直接运行一下PHP,看会报什么错,再对症下药,于是,在命令提示符窗口进入php安装的根目录,然后运行php -v的命令,这时窗口弹出计算机丢失msvcr110.dll的错误, ...

  4. Redis到底该如何利用?【转自:http://www.cnblogs.com/capqueen/p/HowToUseRedis.html】

    Redis是个好东西,经过上两个星期的研究和实践,目前正在项目里大规模的替换掉原来的本地内存cache.但是替换过程中却发现,Redis这东西高端,大气上档次,似乎不是我想象里的使用方法. 在没有深入 ...

  5. 关于VS2010error RC2170 : bitmap file res\tmp1.bmp is not in 3.00 format

      我们有时候向VS中的程序插入图片,会出现如下错误: 这是VS的一个bug,对于不能识别的资源,添加的时候,VS会弹出一个对话框让你填类型,这个类型其实是字符串表示,而不是像内置类型,例如整数. 解 ...

  6. 状压DP

    今天稍微看了下状压DP,大概就是这样子的,最主要的就是位运算, i and (1<<k)=0 意味着i状态下没有 k : i and (1<<k)>0 意味着i状态下有 ...

  7. AUTH过程

    INITIALIZE UPDATE: 在安全通道的显式发起期间,INITIALIZEUPDATE命令用于在卡和主机之间传送卡和会话数据.这个命令开始一个安全通道会话的发起. CPURESET() // ...

  8. PSP0表格

    一 项目计划日志 周活动总结表 姓名:陆宇                                                                         日期:3.1 ...

  9. 这个好像、也许、或许、大概、应该、Maybe真的可以算是传说中的Spring.Net了吧

                                                            这个好像.也许.或许.大概.应该.Maybe真的可以算是传说中的Spring.Net了吧 ...

  10. Careercup - Google面试题 - 4699414551592960

    2014-05-06 13:34 题目链接 原题: we have a random list of people. each person knows his own height and the ...