zoukankan      html  css  js  c++  java
  • hdu 1556 Color the ball

    题目连接

    http://acm.hdu.edu.cn/showproblem.php?pid=1556

    Color the ball

    Description

    $N$个气球排成一排,从左到右依次编号为$1,2,3....N.$每次给定2个整数$a b(a leq b)$,lele便为骑上他的“小飞鸽"牌电动车从气球$a$开始到气球$$b依次给每个气球涂一次颜色。但是$N$次以后lele已经忘记了第$I$个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?

    Input

    每个测试实例第一行为一个整数$N,(N leq 100000)$.接下来的N行,每行包括2个整数$a b(1 leq a leq b leq N)$。
    当$N = 0$,输入结束。

    Output


    每个测试实例输出一行,包括$N$个整数,第$I$个数代表第$I$个气球总共被涂色的次数。

    SampleInput

    3
    1 1
    2 2
    3 3
    3
    1 1
    1 2
    1 3
    0

    SampleOutput

    1 1 1
    3 2 1

    线段树。。

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<vector>
     7 #include<map>
     8 using std::cin;
     9 using std::cout;
    10 using std::endl;
    11 using std::find;
    12 using std::map;
    13 using std::pair;
    14 using std::vector;
    15 #define all(c) (c).begin(), (c).end()
    16 #define cls(arr,val) memset(arr,val,sizeof(arr))
    17 #define iter(c) decltype((c).begin())
    18 #define cpresent(c, e) (find(all(c), (e)) != (c).end())
    19 #define rep(i, n) for (int i = 0; i < (int)(n); i++)
    20 #define tr(c, i) for (iter(c) i = (c).begin(); i != (c).end(); ++i)
    21 #define pb(e) push_back(e)
    22 #define mp(a, b) make_pair(a, b)
    23 const int Max_N = 100010;
    24 typedef unsigned long long ull;
    25 #define mid ((l+r)>>1)
    26 #define lc (root<<1)
    27 #define rc (root<<1|1)
    28 struct Node { int val; };
    29 int arr[Max_N];
    30 struct SegTree {
    31     Node seg[Max_N << 2];
    32     inline void init() { cls(seg, 0); }
    33     inline void push_down(int root) {
    34         if (seg[root].val != 0) {
    35             int &t = seg[root].val;
    36             seg[lc].val += t;
    37             seg[rc].val += t;
    38             t = 0;
    39         }
    40     }
    41     inline void update(int root, int l, int r, int x, int y){
    42         if (x > r || y < l) return;
    43         if (x <= l && y >= r) { seg[root].val += 1; return; }
    44         push_down(root);
    45         update(lc, l, mid, x, y);
    46         update(rc, mid + 1, r, x, y);
    47     }
    48     inline int query(int root, int l, int r, int p) {
    49         if (p > r || p < l) return 0;
    50         if (p <= l && p >= r) return seg[root].val;
    51         push_down(root);
    52         int ret = 0;
    53         ret += query(lc, l, mid, p);
    54         ret += query(rc, mid + 1, r, p);
    55         return ret;
    56     }
    57 }seg;
    58 int main() {
    59 #ifdef LOCAL
    60     freopen("in.txt", "r", stdin);
    61     freopen("out.txt", "w+", stdout);
    62 #endif
    63     int n, a, b;
    64     while (~scanf("%d", &n) && n) {
    65         seg.init();
    66         rep(i, n) scanf("%d %d", &a, &b), seg.update(1, 1, n, a, b);
    67         rep(i, n) arr[i] = seg.query(1, 1, n, i + 1);
    68         rep(i, n) printf("%d%c", arr[i], i < n - 1 ? ' ' : '
    ');
    69     }
    70     return 0;
    71 }
    View Code
    By: GadyPu 博客地址:http://www.cnblogs.com/GadyPu/ 转载请说明
  • 相关阅读:
    java基础学习总结——面向对象1
    java基础学习总结——基础语法2
    java基础学习总结——基础语法1
    java基础学习总结——开篇
    java基础学习总结——java环境变量配置
    Java基础加强总结(二)——泛型
    Java基础加强总结(一)——注解(Annotation)
    Web开发中设置快捷键来增强用户体验
    SQLServer2005中的CTE递归查询得到一棵树
    Jquery操作table
  • 原文地址:https://www.cnblogs.com/GadyPu/p/4567212.html
Copyright © 2011-2022 走看看