zoukankan      html  css  js  c++  java
  • HDU 1698 Just a Hook

    题意:初始1-n 值为1,有Q操作,每次可以把一段【l,r】 整段每个值变成 x,问最后的【1,n】总和。

    线段树成段更新(基础题)

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #include <iostream>
    #define L(x) (x<<1)
    #define R(x) (x<<1|1)
    #define debug(x) printf(#x"= %d
    ",x);
    #define N 100050
    using namespace std;
    int sum[N * 4];
    int flag[N * 4];
    void build(int l, int r, int i) {
        sum[i] = r - l + 1;
        flag[i] = 1;
        if (l != r) {
            int mid = (l + r) >> 1;
            build(l, mid, L(i));
            build(mid + 1, r, R(i));
        }
    }
    void pushdown(int i, int l, int r, int mid) {
        flag[L(i)] = flag[R(i)] = flag[i];
        sum[L(i)] = (mid - l + 1) * flag[i];
        sum[R(i)] = (r - mid) * flag[i];
        flag[i] = 0;
    }
    void update(int l, int r, int pl, int pr, int va, int i) {
    
        if (l >= pl && r <= pr) {
            flag[i] = va;
            sum[i] = (r - l + 1) * va;
            return;
        }
        int mid = (l + r) >> 1;
        if (flag[i])
            pushdown(i, l, r, mid);
        if (pl <= mid)
            update(l, mid, pl, pr, va, L(i));
        if (pr > mid)
            update(mid + 1, r, pl, pr, va, R(i));
        sum[i] = sum[L(i)] + sum[R(i)];
    }
    int main() {
        int n, q, ri = 0, tt;
        scanf("%d", &tt);
        while (tt--) {
            scanf("%d%d", &n, &q);
            build(1, n, 1);
            while (q--) {
                int x, y, z;
                scanf("%d%d%d", &x, &y, &z);
                update(1, n, x, y, z, 1);
            }
            printf("Case %d: The total value of the hook is %d.
    ", ++ri, sum[1]);
        }
        return 0;
    }
  • 相关阅读:
    17.allegro导入导出[原创]
    16.allegro元件手动摆放[原创]
    15.导入网表及status介绍[原创]
    14.allegro.PCB设计前工作[原创]
    13.allegro 颜色设置[原创]
    env1
    allegro使用汇总 [转贴]
    allegro下快捷键设置[转贴]
    使用Cygwin在Windows上体验Linux的快感
    你们值得拥有最好的未来——致武汉校区每位学员
  • 原文地址:https://www.cnblogs.com/L-Ecry/p/3873773.html
Copyright © 2011-2022 走看看