• 线段树


    找到第a个空位 插入

    线段树nlogn

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    #include<math.h>
    #include<set>
    #include<string>
    #include<map>
    
    using namespace std;
    typedef long long LL;
    
    #define inf  2000000000
    #define MAXN 200010
    
    struct node
    {
        int l,r,w;
    }tree[MAXN<<2];
    int x[MAXN];
    
    void Build(int l,int r,int a)
    {
        tree[a].l=l;
        tree[a].r=r;
        tree[a].w=r-l+1;
        if(l==r)
            return ;
        int mid=(l+r)>>1;
        Build(l,mid,a<<1);
        Build(mid+1,r,a<<1|1);
    }
    
    void Insert(int l,int r,int w,int num,int a)
    {
        printf("%d %d
    ",l,r);
        if(l==r)
        {
            printf("%d
    ",l);
            tree[a].w=0;
            x[l]=num;
            return ;
        }
        int mid=(l+r)>>1;
        if(tree[a<<1].w>=w)
            Insert(l,mid,w,num,a<<1);
        else
            Insert(mid+1,r,w-tree[a<<1].w,num,a<<1|1);
        tree[a].w=tree[a<<1].w+tree[a<<1|1].w;
    }
    
    int main()
    {
        int n;
        scanf("%d",&n);
        Build(1,n,1);
        int m;
        scanf("%d",&m);
        for(int i=1;i<=m;i++)
        {
            int a;
            scanf("%d",&a);
            Insert(1,n,a,i,1);
        }
        for(int i=1;i<=n;i++)
            printf("%d ",x[i]);
        return 0;
    }
    /*
    10
    5
    2 3 4 5 1
    
    */
  • 相关阅读:
    统计单词Java
    信息反馈—冲刺08
    信息反馈—冲刺07
    PHP连接MySQL创建表
    phpstrom php出现404
    第十周总结
    信息反馈—冲刺06
    信息反馈—冲刺05
    无所心态,没环境下的自学
    centos6.5 nginx安装pcre错误
  • 原文地址:https://www.cnblogs.com/cherryMJY/p/6438478.html
Copyright © 2020-2023  润新知