Color the ball HDU - 1556 (差分前缀和)

 

题解: 用到差分数组和差分数组的前缀和. 

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <set>
#include <cstring>
#include <stack>
#include <set>
#include <vector>
#include <queue>
#define Swap(a,b)  a ^= b ^= a ^= b
#define pi acos(-1)
#define cl(a,b) memset(a,b,sizeof(a))
using namespace std ;
typedef long long LL;
const int N = 1e7+10 ;
const int MAX = 100005;

int sum[MAX];
int d[MAX];//差分数组
int main()
{
  	ios_base::sync_with_stdio(false);
    cin.tie(NULL),cout.tie(NULL);
	int n ;
	while(cin >>n && n){
		cl(sum,0) ;
		cl(d,0);
		for(int i = 1 ; i<=n; i++ ){
			int l, r ;
			cin >> l >>r  ;
			d[l]++ ;
			d[r+1]-- ;
		}
		for(int i = 1 ; i<=n; i++ ){
			sum[i] = sum[i-1] + d[i] ;
		}
		cout<<sum[1] ;
		for(int i = 2 ; i<=n ; i++){
			cout<<" "<<sum[i] ;
		}
		cout<<endl;
	}
	
    return 0;
}

 

相关文章: