zoukankan      html  css  js  c++  java
  • HJ浇花

    题目描述

    HJ养了很多花(99999999999999999999999999999999999盆),并且喜欢把它们排成一排,编号0~99999999999999999999999999999999998,每天HJ都会给他的花浇水,但是他很奇怪,他会浇n(1 <= n <= 2 * 105)次水,每次都会选择一个区间[l, r],(0 <= l <= r <= 106),表示对区间[l, r]的花都浇一次水。现在问你,通过这些操作之后,被浇了i(1 <= i <= n)次水的花的盆数。

    输入描述:

    输入:第一行一个n,表示HJ的操作次数,接下来的n行,表示每一次选择的浇水区间。

    输出描述:

    输出:输出n个数字Cnt1, Cnt2……Cntn,(用空格隔开)Cnti表示被浇了i次水的花的盆数。
    示例1

    输入

    复制
    3
    0 3
    1 3
    3 8
    

    输出

    复制
    6 2 1
    
    示例2

    输入

    复制
    3
    1 3
    2 4
    5 7
    

    输出

    复制
    5 2 0
    

    说明

    对于样例1的图形解释

    被浇了1次的有:0, 4, 5, 6, 7, 8, cnt1 = 6

    被浇了2次的有:1, 2.           cnt2 = 2

    被浇了3次的有: 3 .            cnt3 = 3

    第一眼看到以为是线段树,然后看了下数据范围,,,106 excuse me?

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4  
     5 const int MAXN=1000005;
     6 int n;
     7 int a[MAXN],f[MAXN];
     8  
     9 int main()
    10 {
    11     scanf("%d",&n);
    12     for(int i=1;i<=n;i++)
    13     {
    14         int l,r;
    15         scanf("%d%d",&l,&r);
    16         a[l]++;
    17         a[r+1]--;
    18     }
    19     for(int i=1;i<MAXN;i++)
    20         a[i]+=a[i-1];
    21     for(int i=0;i<MAXN;i++)
    22         f[a[i]]++;
    23     for(int i=1;i<=n;i++)
    24         printf("%d ",f[i]);
    25     return 0;
    26 }
  • 相关阅读:
    poj 2386 Lake Counting
    hdu 3998 Sequence
    hdu 1556 Color the ball
    synchronized和ReentrantLock的区别
    4种常用线程池
    java深浅拷贝
    ConcurrentHashMap总结
    List原理
    volatile关键字
    java关键字总结
  • 原文地址:https://www.cnblogs.com/InWILL/p/10206251.html
Copyright © 2011-2022 走看看