zoukankan      html  css  js  c++  java
  • HDU 2852 KiKi's K-Number(离线+树状数组)

    题目链接

    省赛训练赛上一题,貌似不难啊。当初,没做出。离线+树状数组+二分。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 using namespace std;
     5 #define N 100000
     6 int p[100100];
     7 int qur[300001][3];
     8 int lowbit(int t)
     9 {
    10     return t&(-t);
    11 }
    12 void insert(int t,int d)
    13 {
    14     while(t <= N)
    15     {
    16         p[t] += d;
    17         t += lowbit(t);
    18     }
    19 }
    20 int getsum(int t)
    21 {
    22     int sum = 0;
    23     while(t)
    24     {
    25         sum += p[t];
    26         t -= lowbit(t);
    27     }
    28     return sum;
    29 }
    30 int bin(int x)
    31 {
    32     int str,end,mid;
    33     if(x > getsum(N))
    34     return -1;
    35     str = 1;
    36     end = N;
    37     while(str < end)
    38     {
    39         mid = (str + end)/2;
    40         if(getsum(mid) < x)
    41         str = mid + 1;
    42         else
    43         end = mid;
    44     }
    45     return str;
    46 }
    47 int main()
    48 {
    49     int n,i;
    50     while(scanf("%d",&n)!=EOF)
    51     {
    52         memset(p,0,sizeof(p));
    53         for(i = 0;i < n;i ++)
    54         {
    55            scanf("%d",&qur[i][0]);
    56            if(qur[i][0] == 0||qur[i][0] == 1)
    57            scanf("%d",&qur[i][1]);
    58            else
    59            scanf("%d%d",&qur[i][1],&qur[i][2]);
    60         }
    61         for(i = 0;i < n;i ++)
    62         {
    63             if(qur[i][0] == 0)
    64             insert(qur[i][1],1);
    65             else if(qur[i][0] == 1)
    66             {
    67                 if(getsum(qur[i][1])-getsum(qur[i][1]-1) > 0)
    68                 insert(qur[i][1],-1);
    69                 else
    70                 printf("No Elment!
    ");
    71             }
    72             else
    73             {
    74                 int flag;
    75                 flag = bin(getsum(qur[i][1])+qur[i][2]);
    76                 if(flag == -1)
    77                 printf("Not Find!
    ");
    78                 else
    79                 printf("%d
    ",flag);
    80             }
    81         }
    82     }
    83     return 0;
    84 }
  • 相关阅读:
    学习嵌入式规划
    函数指针与指针函数
    css3
    css
    file upload使用iframe
    上传图片,文件
    table td里面的内容多的话出...
    html5 新标签
    html element
    css/html规范
  • 原文地址:https://www.cnblogs.com/naix-x/p/3253841.html
Copyright © 2011-2022 走看看