zoukankan      html  css  js  c++  java
  • HDU1556-color the ball(线段树)


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556


    #include<cstdio>
    using namespace std;
    struct node
    {
        int start;
        int end;
        int num;
    };
    node q[500000];
    void built(int s,int e,int key)
    {
        q[key].start=s;
        q[key].end=e;
        q[key].num=0;
        if(s==e)
        {
            return;
        }
        int mid=(s+e)/2;
        built(s,mid,2*key);
        built(mid+1,e,2*key+1);
    }
    void updata(int i,int j,int key)
    {
        if(q[key].start==i&&q[key].end==j)
        {
            q[key].num++;
            return;
        }
        int mid=(q[key].start+q[key].end)/2;
        if(i<=mid&&j>mid)
        {
            updata(i,mid,2*key);
            updata(mid+1,j,2*key+1);
        }
        else
        {
            if(i<=mid)
            updata(i,j,2*key);
            if(j>mid)
            updata(i,j,2*key+1);
        }
    }
    void insert(int i,int j,int key)
    {
        if(key!=1)
        q[key].num+=q[key/2].num;
        if(q[key].start==q[key].end)
        {
            return;
        }
        int mid=(q[key].start+q[key].end)/2;
        if(i<=mid)
        insert(i,j,2*key);
        if(j>mid)
        insert(i,j,2*key+1);
    }
    int check(int i,int key)
    {
        if(q[key].start==q[key].end)
        return q[key].num;
        int mid=(q[key].start+q[key].end)/2;
        if(i<=mid)
        check(i,2*key);
        else
        check(i,2*key+1);
    }
    int main()
    {
        int N,a,b,i;
        while(scanf("%d",&N)&&N)
        {
            built(1,N,1);
            for(i=1;i<=N;i++)
            {
                scanf("%d%d",&a,&b);
                updata(a,b,1);
            }
            insert(1,N,1);
            printf("%d",check(1,1));
            for(i=2;i<=N;i++)
            printf("% d",check(i,1));
            printf("
    ");
        }
        return 0;
    }
    




  • 相关阅读:
    使用ServiceLoader辅助责任链模式
    聊聊ThreadLocal
    Log4J
    Scalable IO in Java
    MySQL的索引
    Git的操作与理解
    阿里校招内推总结
    Executor框架的简要分析
    Java 8 中的ConcurrentHashMap源码分析
    从C#到Swift,Swift学习笔记
  • 原文地址:https://www.cnblogs.com/westwind1005/p/5975253.html
Copyright © 2011-2022 走看看