zoukankan      html  css  js  c++  java
  • ZOJ 3635 树状数组+二分

    这题那时怎么想就是想不出来……并且今晚没有多大状态,自己都晕了……一题没做出来……

    baoge解释好久才懂……唉……线段树,树状数组用得还是不够熟啊……

    WA了二发,才知道二分错了。二分好久不用。老是出错了如今……

    #include<iostream>
    #include<cstring>
    #include<string>
    #include<cstdio>
    #define sca(a) scanf("%d",&a)
    #define mem(a,b) memset(a,b,sizeof(a))
    using namespace std;
    int c[50005],a[50005],b,n;
    void update(int x,int num)
    {
        for(int i=x; i<=n; i+=i&(-i))
            c[i]+=num;
    }
    int sum(int x)
    {
        int ans=0;
        for(int i=x; i>=1; i-=i&(-i))
            ans+=c[i];
        return ans;
    }
    int main()
    {
        int i,j,m;
        while(~sca(n))
        {
            mem(c,0);
            for(i=1; i<=n; i++)
                update(i,1);
            for(i=1; i<=n; i++)
            {
                sca(m);
                int l=1,r=n;
                while(l<=r)
                {
                    int mid=(l+r)/2,s=sum(mid);
                    if(s>=m) r=mid-1;
                    else l=mid+1;
                }
                a[i]=l;
                update(l,-1);
            }
            sca(m);
            for(i=0; i<m-1; i++)
            {
                sca(b);
                printf("%d ",a[b]);
            }
            sca(b);
            printf("%d
    ",a[b]);
        }
        return 0;
    }
    


  • 相关阅读:
    小程序运行环境
    在虚拟机系统上安装oracle教程
    Java keywords
    Java bytecode instruction listings
    一个理解JVM的例子2
    一个理解JVM的例子
    JDK的环境变量设置
    JRE、JDK和JVM的关系
    合理的封装实例
    修改源码的几种取巧的方式
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7183324.html
Copyright © 2011-2022 走看看