HDU 2852 KiKi's K-Number(树状数组)
来源:互联网 发布:人民银行工资待遇 知乎 编辑:程序博客网 时间:2024/06/07 17:50
思路:三种操作,增加一个数,减少一个数,询问大于某个数的第k个数
第一种操作就是普通的update,第二个询问前先求query(x)-query(x-1)是否为0,为0就是没有这个元素,第三个操作大于某个数的第K个数相当于求第query(x)+k个数,那么二分一下就可以了
#include<bits/stdc++.h>using namespace std;const int maxn = 100000+50;int c[maxn];int lowbit(int x){return x&(-x);}void update(int i,int v){while(i<=maxn){c[i]+=v;i+=lowbit(i);}}int query(int i){int ans = 0;while(i){ans+=c[i];i-=lowbit(i);}return ans;}int find(int k){int ans = maxn; int l = 1,r=maxn;while(l<=r){int mid = (l+r)>>1;if(query(mid)>=k)ans=mid,r=mid-1;elsel=mid+1;}return ans;}int main(){ int q;while(scanf("%d",&q)!=EOF){memset(c,0,sizeof(c));while(q--){int op,x;scanf("%d%d",&op,&x);if(op==0) update(x,1);else if(op==1){ if(query(x)-query(x-1)==0)puts("No Elment!");elseupdate(x,-1);}else{ int k; scanf("%d",&k); if(query(maxn)-query(x) < k) puts("Not Find!"); else printf("%d\n",find(k+query(x)));}}}}
0 0
- hdu 2852 KiKi's K-Number(树状数组+二分)
- hdu 2852 KiKi's K-Number(树状数组)
- HDU 2852 KiKi's K-Number(树状数组+二分)
- hdu 2852 KiKi's K-Number(树状数组)
- HDU 2852 KiKi's K-Number(树状数组)
- HDU 2852 KiKi's K-Number(树状数组+二分)
- hdu 2852 KiKi's K-Number(树状数组)
- HDU 2852 KiKi's K-Number (树状数组+二分)
- HDU 2852 KiKi's K-Number *(树状数组)
- hdu 2852 KiKi's K-Number 二分+树状数组
- HDU 2852 KiKi's K-Number 树状数组
- [树状数组]hdu 2852 KiKi's K-Number# +二分查找。
- hdu 2852 KiKi's K-Number (树状数组)
- HDU 2852 KiKi's K-Number 树状数组
- HDU 2852 KiKi's K-Number(线段树+树状数组)
- hdu 2852 KiKi's K-Number 树状数组
- hdu 2852 KiKi's K-Number (树状数组)
- HDU 2852 KiKi's K-Number (树状数组+二分)
- go-map
- 单例模式饿汉式
- Python学习笔记(二)
- HDU 1403 Longest Common Substring(后缀数组入门)
- assert断言
- HDU 2852 KiKi's K-Number(树状数组)
- C#调用cmd用ffmpeg实现视频截图,图片使用后删除
- Leetcode 355. Design Twitter (Medium) (cpp)
- SSH整合
- HDU 1097 快速幂取余(C语言)
- Form表单里的BUTTON的type='submit'和'button'的区别
- 软考之路(一)---数据结构
- [又值奥运季] 2016年里约奥运会--8月17日赛事
- Myeclipse打开出现:Could not create the view: An unexpected exception was thrown