• HDU1556 Color the ball


    Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

    Total Submission(s): 17300    Accepted Submission(s): 8652


    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
     
    Recommend
    LL
     
     
    差分数组,每次若涂色区间为l~r,则在l处+1,r+1处-1,统计从1到每个位置的前缀和就是每个位置的答案。
    ↑前缀和用树状数组维护
     
     1 /*by SilverN*/
     2 #include<algorithm>
     3 #include<iostream>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<cmath>
     7 using namespace std;
     8 const int mxn=100020;
     9 int t[mxn];
    10 int n,m;
    11 void add(int p,int v){
    12     while(p<=n+5){t[p]+=v;p+=p&-p;}
    13 }
    14 int sum(int p){
    15     int res=0;
    16     while(p){res+=t[p];p-=p&-p;}
    17     return res;
    18 }
    19 int main(){
    20     while(scanf("%d",&n) && n){
    21         int i,j;
    22         memset(t,0,sizeof t);
    23         int x,y;
    24         for(i=1;i<=n;i++){
    25             scanf("%d%d",&x,&y);
    26             add(x,1);
    27             add(y+1,-1);
    28         }
    29         for(i=1;i<=n;i++){
    30             if(i==1)printf("%d",sum(i));
    31             else printf(" %d",sum(i));
    32         }
    33         printf("
    ");
    34     }
    35     return 0;
    36 }
  • 相关阅读:
    Sparc 10 with Simics
    Perl log 0906
    FPGA flow
    SV program与module的区别
    [基础]Verilog的$readmemx介绍
    [转载] 我对验证的一些理解
    我的书单
    boost 1_45_0 boost\cstdint.hpp 在 VS8下的 bug stdint.h 无法找到头文件
    Inside DllMain
    NoSQL数据库笔谈(转载)
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/5872325.html
Copyright © 2020-2023  润新知