zoukankan      html  css  js  c++  java
  • poj 2828 线段树

       知道了这个解法,让我很兴奋。

       好,多余的话不说,上代码。

     1 #include <stdio.h>
     2 #define lson l,m,rt<<1
     3 #define rson m+1,r,rt<<1|1
     4 #define maxn 222222
     5 int val[maxn],sum[maxn<<2],pos[maxn],res[maxn];
     6 int id;
     7 void build(int l,int r,int rt)
     8 {
     9     sum[rt]=r-l+1;
    10     if(l==r)
    11         return;
    12     int m=(l+r)>>1;
    13     build(lson);
    14     build(rson);
    15 }
    16 void update(int p,int l,int r,int rt)
    17 {
    18     sum[rt]--;
    19     if(l==r)
    20     {
    21         id=l;
    22         return;
    23     }
    24     int m=(l+r)>>1;
    25     if(sum[rt<<1]>=p)
    26         update(p,lson);
    27     else
    28     {
    29         p-=sum[rt<<1];
    30         update(p,rson);
    31     }
    32 }
    33 int main()
    34 {
    35     int n;
    36     int i;
    37     while(~scanf("%d",&n))
    38     {
    39         build(1,n,1);
    40         for(i=0;i<n;++i)
    41         {
    42             scanf("%d%d",&pos[i],&val[i]);
    43         }
    44         for(i=n-1;i>=0;--i)
    45         {
    46             update(pos[i]+1,1,n,1);
    47             res[id]=val[i];
    48         }
    49         for(i=1;i<=n;++i)
    50         {
    51             if(i==1)
    52                 printf("%d",res[i]);
    53             else
    54                 printf(" %d",res[i]);
    55         }
    56         printf("\n");
    57     }
    58     return 0;
    59 }
  • 相关阅读:
    C++中的类访问控制
    Docker应用程序容器技术_转
    16C554(8250)驱动分析
    动态调频DVFS_转
    ubifs概述
    ubifs物理存储
    fmt-重新格式化段落
    uniq-删除重复
    sort
    join用法
  • 原文地址:https://www.cnblogs.com/symons1992/p/2856104.html
Copyright © 2011-2022 走看看