Color the ball 扫描线

这里写图片描述
题解:
1.没接收一个区间,比如i,j,记录次数的数组arr[i]++,arr[j+1]–;
2.最后得出第i个点出现次数的值时,arr[i] = arr[i]+arr[i-1];
3.注意输出格式,最后一个没空格.

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<map>
#define LL long long
using namespace std ;
int main()
{
    int N,a,b;
    int arr[100005];
    while(~scanf("%d",&N)&&N)  
    {
        for(int i = 0 ; i<= N+1 ; i++)
        arr[i] = 0;
        for(int j = 0 ; j < N ; j++)
        {
            scanf("%d%d",&a,&b);
            arr[a]++;
            arr[b+1]--;
        }   
        for(int j = 1 ; j <= N ; j++)
        {
            arr[j] +=arr[j-1];
            if(j == N)
            cout<<arr[j];
            else 
            cout<<arr[j]<<" "; 
        }
        cout<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_40240576/article/details/81571355