zoukankan      html  css  js  c++  java
  • HDU_1556 Color the ball(线段树)

      结构体中定义记录染色次数的参数(cov),更新时直接找到对应的区间,使cov++。查询时要有点小操作。

    查询过程:

    void query(当前节点 t,要查询的点 x)
    {
      
      if(找到要查询的点)
      
    return cov;
      
      if(该点的cov > 0
    {
     左孩子.cov
    += 当前节点.cov;
            右孩子.cov
    += 当前节点.cov;
     当前节点.cov
    = 0;
        }
    mid
    = (左孩子+右孩子) >> 1;
    if(x <= mid)
                 query(左孩子, x);
    else
      query(右孩子, x);
    }

    下边是完整的代码:

    View Code
    #include <stdio.h>
    #define N 100010
    struct node
    {
    int l, r;
    int cov;
    }node[N
    *4];
    int ans;
    void creat(int t, int l, int r)
    {
    node[t].l
    = l;
    node[t].r
    = r;
    node[t].cov
    = 0;
    if(l == r) return;
    int mid = (node[t].l + node[t].r) >> 1;
    creat(t
    <<1, l, mid);
    creat(t
    <<1|1, mid+1, r);
    }
    void updata(int t, int l, int r)
    {
    if(node[t].l >= l && node[t].r <= r)
    {
    node[t].cov
    ++;
    return;
    }
    int mid = (node[t].l + node[t].r) >> 1;
    if(l > mid)
    updata(t
    <<1|1, l, r);
    else if(r <= mid)
    updata(t
    <<1, l, r);
    else
    {
    updata(t
    <<1, l, mid);
    updata(t
    <<1|1, mid+1, r);
    }
    }
    void query(int t, int x)
    {
    if(node[t].l == node[t].r)
    {
    ans
    = node[t].cov;
    return;
    }
    if(node[t].cov > 0)
    {
    node[t
    <<1].cov += node[t].cov;
    node[t
    <<1|1].cov += node[t].cov;
    node[t].cov
    = 0;
    }
    int mid = (node[t].l + node[t].r) >> 1;
    if(x <= mid) query(t<<1, x);
    else query(t<<1|1, x);
    }
    int main()
    {
    int n, i, x, y;
    //freopen("data.in", "r", stdin);
    while(scanf("%d", &n), n)
    {
    creat(
    1, 1, n);
    for(i = 1; i <= n; i++)
    {
    scanf(
    "%d%d", &x, &y);
    updata(
    1, x, y);
    }
    for(i = 1; i < n; i++)
    {
    query(
    1, i);
    printf(
    "%d ", ans);//printf("ok\n");
    }
    query(
    1, n);
    printf(
    "%d\n", ans);
    }
    return 0;
    }

  • 相关阅读:
    MERGE引擎 分表后 快速查询所有数据
    MYSQL导入中文数据乱码的四种解决办法
    数据库中为什么不推荐使用外键约束?
    Word转PDF
    YII2 更新数据不成功
    YII2 使用curl请求,返回false
    Yii集成PHPWord
    网站安全DDOS攻击及监测
    nginx日志
    定时任务秒级执行
  • 原文地址:https://www.cnblogs.com/vongang/p/2139694.html
Copyright © 2011-2022 走看看