zoukankan      html  css  js  c++  java
  • hdu 1556(线段树之扫描线)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556

    Color the ball

    Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 11361    Accepted Submission(s): 5659


    Problem Description
    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
     
    Author
    8600
     
    Source
     
    题目大意:先给一个N,再给一个a,b区间,每一次都把这个区间的气球涂色一遍,N次之后,分别求每个气球被涂了几次颜色。
    如果用一个简单的数组来记录,10000*10000想必一定会超时!!
    所以这里引入一个小的技巧,就是a的位置+1,b+1的位置-1,最后一个for循环,每一个数都要加上前面那个数的值即可。
     
    详见代码
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cmath>
     4 #include <cstring>
     5 
     6 using namespace std;
     7 
     8 int num[100000+10];
     9 
    10 int main ()
    11 {
    12     int T,a,b,Max;
    13     while (~scanf("%d",&T))
    14     {
    15         memset(num,0,sizeof(num));
    16         Max=0;
    17         if (T==0)
    18             break;
    19         for (int i=1; i<=T; i++)
    20         {
    21             scanf("%d%d",&a,&b);
    22             num[a]++;
    23             num[++b]--;
    24 
    25         }
    26         for (int i=1; i<=T; i++)
    27         {
    28             num[i]+=num[i-1];
    29             if(i==1)
    30             printf ("%d",num[i]);
    31             else
    32                 printf(" %d",num[i]);
    33         }
    34         printf ("
    ");
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    Insertion Sort List
    Max Points on a Line
    Evaluate Reverse Polish Notation
    vue路由传参的三种基本方式
    如何搭建一个vue项目
    vue路由跳转时更改页面title
    CSS清除浮动大全共8种方法
    border:none 与border:0的区别
    for..in和for..of的功能
    IE浏览器兼容问题-----html和css的兼容写法
  • 原文地址:https://www.cnblogs.com/qq-star/p/4430164.html
Copyright © 2011-2022 走看看