• 【HDOJ】1556 Color the ball


    简单线段树。

     1 #include <stdio.h>
     2 
     3 #define MAXN 100005
     4 #define lson l, mid, rt<<1
     5 #define rson mid+1, r, rt<<1|1
     6 
     7 int cols[MAXN<<2], leaf;
     8 
     9 void PushDown(int rt) {
    10     if ( cols[rt] ) {
    11         cols[rt<<1|1] += cols[rt];
    12         cols[rt<<1] += cols[rt];
    13         cols[rt] = 0;
    14     }
    15 }
    16 
    17 void build(int l, int r, int rt) {
    18     int mid;
    19     cols[rt] = 0;
    20     if (l == r)
    21         return ;
    22     mid = (l+r)>>1;
    23     build(lson);
    24     build(rson);
    25 }
    26 
    27 void update(int ll, int rr, int l, int r, int rt) {
    28     int mid;
    29 
    30     if (ll<=l && rr>=r) {
    31         cols[rt]++;
    32         return ;
    33     }
    34     PushDown(rt);
    35     mid = (l+r)>>1;
    36     if (ll <= mid)
    37         update(ll, rr, lson);
    38     if (rr > mid)
    39         update(ll, rr, rson);
    40 }
    41 
    42 void query(int l, int r, int rt) {
    43     int mid;
    44     if (l == r) {
    45         if (leaf)
    46             printf(" %d", cols[rt]);
    47         else
    48             printf("%d", cols[rt]);
    49         ++leaf;
    50         return ;
    51     }
    52     PushDown(rt);
    53     mid = (l+r)>>1;
    54     query(lson);
    55     query(rson);
    56 }
    57 
    58 int main() {
    59     int n;
    60     int i, x, y;
    61 
    62     while (scanf("%d",&n)!=EOF && n) {
    63         build(1, n, 1);
    64         for (i=0; i<n; ++i) {
    65             scanf("%d %d", &x, &y);
    66             update(x,y,1,n,1);
    67         }
    68         leaf = 0;
    69         query(1, n, 1);
    70         printf("
    ");
    71     }
    72 
    73     return 0;
    74 }
  • 相关阅读:
    SQLServer多表联查,多表分页查询
    GOF23种设计模式概括
    常用的正则表达式
    面向对象七大原则
    Jquery简单学习
    MVC图片上传详解
    面向对象OOP概念描述
    C++ 基础命名空间 using namespace std;
    找不到WJSWDLL.dll
    AspectJ中的类型间声明(成员注入)
  • 原文地址:https://www.cnblogs.com/bombe1013/p/3769684.html
Copyright © 2020-2023  润新知