zoukankan      html  css  js  c++  java
  • hdu 4614 Vases and Flowers

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

    直接线段树维护

    代码:

    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<cmath>
    #include<set>
    #include<map>
    #include<stack>
    #include<vector>
    #include<algorithm>
    #include<queue>
    #include<bitset>
    #include<deque>
    #include<numeric>
    
    //#pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    typedef long long ll;
    typedef unsigned int uint;
    typedef pair<int,int> pp;
    const double eps=1e-9;
    const int INF=0x3f3f3f3f;
    const ll MOD=1000000007;
    const int N=50001;
    struct node
    {
        int l,r,k;
        int m;
    }btr[N*4];
    void update(int x,int l,int r,int k)
    {
        if(btr[x].l==l&&btr[x].r==r)
        {
            btr[x].k=k;
            btr[x].m=k*(btr[x].r-btr[x].l+1);
            return ;
        }
        if(btr[x].k!=-1)
        {
            btr[(x<<1)].k=btr[(x<<1)|1].k=btr[x].k;
            btr[(x<<1)].m=(btr[(x<<1)].r-btr[(x<<1)].l+1)*btr[(x<<1)].k;
            btr[(x<<1)|1].m=(btr[(x<<1)|1].r-btr[(x<<1)|1].l+1)*btr[(x<<1)|1].k;
        }
        int mid=(btr[x].l+btr[x].r)>>1;
        if(r<=mid)
        update((x<<1),l,r,k);
        else if(l>mid)
        update((x<<1)|1,l,r,k);
        else
        {
            update((x<<1),l,mid,k);
            update((x<<1)|1,mid+1,r,k);
        }
        btr[x].m=btr[(x<<1)].m+btr[(x<<1)|1].m;
        if(btr[(x<<1)].k==btr[(x<<1)|1].k)
        btr[x].k=btr[(x<<1)].k;
        else
        btr[x].k=-1;
    }
    int get(int x,int l,int r)
    {
        if(btr[x].l==l&&btr[x].r==r)
        return btr[x].m;
        if(btr[x].k!=-1)
        return (btr[x].k*(r-l+1));
        int mid=(btr[x].l+btr[x].r)>>1;
        if(r<=mid)
        return get((x<<1),l,r);
        else if(l>mid)
        return get((x<<1)|1,l,r);
        else
        return get((x<<1),l,mid)+get((x<<1)|1,mid+1,r);
    }
    void build(int x,int l,int r)
    {//cout<<x<<" "<<l<<" "<<r<<endl;
        btr[x].l=l;
        btr[x].r=r;
        btr[x].k=0;
        btr[x].m=0;
        if(l==r)
        return ;
        int mid=(l+r)>>1;
        build((x<<1),l,mid);
        build((x<<1)|1,mid+1,r);
    }
    int bs(int l,int r,int k)
    {
        int x=l;
        while(l<=r)
        {
            int m=(l+r)>>1;
            if((m-x+1-get(1,x,m))>=k)
            r=m-1;
            else
            l=m+1;
        }
        return l;
    }
    int main()
    {
        //freopen("data.in","r",stdin);
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int n,m;
            scanf("%d %d",&n,&m);
            build(1,0,n-1);
            while(m--)
            {
                int w;
                scanf("%d",&w);
                if(w==1)
                {
                    int a,f;
                    scanf("%d %d",&a,&f);
                    int tmp=get(1,a,n-1);
                    if(tmp==(n-a)||f==0)
                    {printf("Can not put any one.
    ");continue;}
                    f=min(f,n-a-tmp);
                    int l=bs(a,n-1,1);
                    int r=bs(a,n-1,f);
                    printf("%d %d
    ",l,r);
                    update(1,l,r,1);
                }else
                {
                    int l,r;
                    scanf("%d %d",&l,&r);
                    printf("%d
    ",get(1,l,r));
                    update(1,l,r,0);
                }
            }
            printf("
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    IIS的各种身份验证详细测试
    HTTP Error 401.3 Unauthorized Error While creating IIS 7.0 web site on Windows 7
    C/S and B/S
    WCF ContractFilter mismatch at the EndpointDispatcher exception
    Configure WCF
    Inheritance VS Composition
    Unhandled Error in Silverlight Application, code 2103 when changing the namespace
    Java RMI VS TCP Socket
    Principles Of Object Oriented Design
    Socket处理发送和接收数据包,一个小实例:
  • 原文地址:https://www.cnblogs.com/liulangye/p/3215307.html
Copyright © 2011-2022 走看看