HDU 2852 KiKi's K-Number 主席树或树状数组
2015-04-10 11:01
459 查看
主席树的简单应用但是貌似主席树被卡了,但用树状数组能过。
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> using namespace std; const int maxn=100010; int x[maxn],bit[maxn]; int low(int p){ return p&(-p);} void merg(int p,int n,int k){ while(p<=n){ bit[p]+=k; p=p+low(p); } } int sum(int p){ int s=0; while(p>0){ s+=bit[p]; p=p-low(p); } return s; } int main() { int i,j,n,m; while(cin>>m){ memset(x,0,sizeof(x)); memset(bit,0,sizeof(bit)); for(i=0;i<m;i++){ int p; scanf("%d",&p); if(p==0){ scanf("%d",&p); x[p]++; merg(p,100000,1); } else if(p==1){ scanf("%d",&p); if(x[p]==0) printf("No Elment!\n"); else{ merg(p,100000,-1); x[p]--; } } else{ int a,b; scanf("%d%d",&a,&b); int le,ri,mid; le=a+1; ri=100000; while(le<=ri){ mid=(le+ri)/2; if(sum(mid)-sum(a)>=b) ri=mid-1; else le=mid+1; } if(le>100000) printf("Not Find!\n"); else printf("%d\n",le); } } } }
相关文章推荐
- hdu 2852 KiKi's K-Number 二分+树状数组
- 查询比a大的数中的第k大的数 树状数组 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(动态过程求第K小数)
- hdu 2852 KiKi's K-Number (树状数组)
- HDU 2852——KiKi's K-Number(树状数组+二分查找, 第k大)
- hdu 2852 KiKi's K-Number
- hdu2852——KiKi's K-Number
- hdu 2852 KiKi's K-Number(树状数组)
- hdu2852 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(线段树单点更新)