zoukankan      html  css  js  c++  java
  • hdu2852KiKi's K-Number(区间K值)

    http://acm.hdu.edu.cn/showproblem.php?pid=2852

    区间K值写错了。。。

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 using namespace std;
     7 #define N 100010
     8 #define lowbit(x) (x&(-x))
     9 int s[N<<2],ff[N];
    10 void add(int p,int da,int l,int r,int w)
    11 {
    12     if(l==r)
    13     {
    14         s[w]+=da;
    15         return ;
    16     }
    17     int m = (l+r)>>1;
    18     if(p>m)
    19     add(p,da,m+1,r,w<<1|1);
    20     else
    21     add(p,da,l,m,w<<1);
    22     s[w] = s[w<<1]+s[w<<1|1];
    23 }
    24 int getsum(int a,int b,int l,int r,int w)
    25 {
    26     if(a<=l&&b>=r)
    27        return s[w];
    28     int m = (l+r)>>1,ans=0;
    29     if(a<=m)
    30     ans+=getsum(a,b,l,m,w<<1);
    31     if(b>m)
    32     ans+=getsum(a,b,m+1,r,w<<1|1);
    33     return ans;
    34 }
    35 int query(int k,int l,int r,int w)
    36 {
    37     if(l==r)
    38     return l;
    39     int m = (l+r)>>1;
    40     if(k<=s[w<<1])
    41     return query(k,l,m,w<<1);
    42     else
    43     return query(k-s[w<<1],m+1,r,w<<1|1);
    44 }
    45 int main()
    46 {
    47     int n,a,b,c;
    48     while(scanf("%d",&n)!=EOF)
    49     {
    50         memset(s,0,sizeof(s));
    51         memset(ff,0,sizeof(ff));
    52         while(n--)
    53         {
    54             scanf("%d",&a);
    55             if(a==0)
    56             {
    57                 scanf("%d",&b);
    58                 ff[b]++;
    59                 add(b,1,1,N,1);
    60             }
    61             else if(a==1)
    62             {
    63                 scanf("%d",&b);
    64                 if(ff[b]==0)
    65                 printf("No Elment!
    ");
    66                 else
    67                 {
    68                     ff[b]--;
    69                     add(b,-1,1,N,1);
    70                 }
    71             }
    72             else
    73             {
    74                 scanf("%d%d",&b,&c);
    75                 int s1 = getsum(1,b,1,N,1);
    76                 if(s[1]-s1<c)
    77                 printf("Not Find!
    ");
    78                 else
    79                 {
    80                     c+=s1;
    81                     int o = query(c,1,N,1);
    82                     printf("%d
    ",o);
    83                 }
    84             }
    85         }
    86     }
    87     return 0;
    88 }
    View Code
  • 相关阅读:
    Xtreme9.0
    Xtreme8.0
    Xtreme8.0
    Xtreme8.0
    Xtreme9.0
    Xtreme8.0
    IEEEXtreme Practice Community Xtreme9.0
    MySQL添加用户、删除用户与授权
    程序员进阶之路—如何独当一面
    PowerDesigner版本控制器设置权限
  • 原文地址:https://www.cnblogs.com/shangyu/p/3258341.html
Copyright © 2011-2022 走看看