zoukankan      html  css  js  c++  java
  • hdu 1556...线段树划水...

    #include <stdio.h>
    #include <string.h>
    
    const int MAXN = 100005;
    
    typedef struct {
        int cnt;
        int l;
        int r;
    }Node;
    
    Node seg[3 * MAXN];
    int ans[MAXN];
    
    void build(int idx,int l,int r)
    {
        seg[idx].l = l;
        seg[idx].r = r;
        seg[idx].cnt = 0;
    
        if ( l == r )
            return;
    
        int mid = ( l + r ) >> 1;
        build(idx << 1, l, mid);
        build((idx << 1) + 1, mid + 1, r);
    }
    
    void color(int idx,int l,int r)
    {
        if ( seg[idx].l == l && seg[idx].r == r )
        {
            seg[idx].cnt++;
            return;
        }
    
        int mid = ( seg[idx].l + seg[idx].r ) >> 1;
        if ( r <= mid )
            color(idx << 1, l, r);
        else if ( mid + 1 <= l )
            color((idx << 1 ) + 1, l, r);
        else
        {
            color(idx << 1, l, mid );
            color((idx << 1 ) + 1, mid + 1, r);
        }
    }
    
    void solve(int idx)
    {
        for (int i = seg[idx].l; i <= seg[idx].r; i++)
            ans[i] += seg[idx].cnt;
    
        if ( seg[idx].l == seg[idx].r )
            return;
    
        solve(idx << 1);
        solve((idx << 1 ) + 1);
    }
    
    int main()
    {
    //    freopen("1.txt","r",stdin);
    
        int N;
        while ( scanf("%d",&N) == 1 )
        {
            memset(ans, 0, sizeof(ans));
            memset(seg, 0, sizeof(seg));
    
            if ( N == 0 )
                break;
            
            build(1,1,N);
            int p,q;
    
            for (int i = 0; i < N; i++)
            {
                scanf("%d%d",&p,&q);
                color(1,p,q);
            }
    
            solve(1);
    
            for ( i = 1; i <= N; i++)
                printf("%d%c",ans[i], ( i == N ) ? '
    ' : ' ' );
    
        }
    
        return 0;
    }
  • 相关阅读:
    django学习----http协议
    线程进程和协程
    内置函数
    我所了解的递归
    函数的闭包和装饰器
    字符串的内置方法
    格式化输入输出
    逻辑运算符和操作运算符
    python流程控制
    计算机网络原理
  • 原文地址:https://www.cnblogs.com/jiongjiong-mengmeng/p/3149928.html
Copyright © 2011-2022 走看看