zoukankan      html  css  js  c++  java
  • Color the ball (树状数组,改段求点)

    N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?

    Input

    每个测试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包括2个整数a b(1 <= a <= b <= N)。
    当N = 0,输入结束。

    Output

    每个测试实例输出一行,包括N个整数,第I个数代表第I个气球总共被涂色的次数。

    Sample Input

    3
    1 1
    2 2
    3 3
    3
    1 1
    1 2
    1 3
    0

    Sample Output

    1 1 1
    3 2 1
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int c[100100];
    int a[100100];
    int n;
    int lowbit(int x)
    {
        return x&(-x);
    }
    void update(int i,int value)
    {
        while(i<=n)
        {
            c[i]+=value;
            i+=lowbit(i);
        }
        return ;
    }
    int getsum(int i)
    {
        int ans=0;
        while(i>0)
        {
            ans+=c[i];
            i-=lowbit(i);
        }
        return ans;
    }
    int main()
    {
        while(cin>>n&&n)
        {
            memset(c,0,sizeof(c));
            int i,x,y;
            for(i=1;i<=n;i++)
            {
                cin>>x>>y;
                update(x,1);
                update(y+1,-1);
            }
            cout<<getsum(1);
            for(i=2;i<=n;i++)
                cout<<" "<<getsum(i);
            cout<<endl;
    
    
        }
        return 0;
    }
  • 相关阅读:
    墙奸有感
    关于ubuntu里的fcitx
    Ubuntu 9.10 ati HD 3470 显卡驱动 搞定
    XP与Ubuntu双系统的问题
    invalid conversion from ‘__pthread_t*’ to ‘pid_t’
    Julian Day
    m的n次幂的求法
    Sublime Text 2
    在虚拟机Virtualbox安装Win8消费者版
    记一个循环的错误
  • 原文地址:https://www.cnblogs.com/jk17211764/p/9677371.html
Copyright © 2011-2022 走看看