• 线段树 延迟更新


    fafu 1008

     1 #include<stdio.h>
     2 #include<string.h>
     3 const int N=100000+5;
     4 int n, q;
     5 int a[N], tree[N<<2], t[N<<2];
     6 
     7 void build(int rt, int l, int r)
     8 {
     9     if(l==r)
    10         tree[rt]=10;
    11     else
    12     {
    13         int m=(l+r)>>1;
    14         build(rt<<1, l, m);
    15         build((rt<<1)+1, m+1, r);
    16         
    17         tree[rt]=tree[rt<<1]+tree[(rt<<1)+1];
    18     }
    19 }
    20 
    21 void pushDown(int rt, int m)
    22 {
    23     if(t[rt]!=-1)
    24     {
    25         t[rt<<1]=t[rt];
    26         t[(rt<<1)+1]=t[rt];
    27         tree[rt<<1]=t[rt]*(m-(m>>1));
    28         tree[(rt<<1)+1]=t[rt]*(m>>1);
    29         t[rt]=-1;
    30     }
    31 }
    32 
    33 void update(int rt, int l, int r, int x, int y, int v)
    34 {
    35     if(x<=l && r<=y)
    36     {
    37         t[rt]=v;
    38         tree[rt]=(r-l+1)*v;
    39         return;
    40     }
    41     pushDown(rt, r-l+1);
    42     int m=(l+r)>>1;
    43     if(x<=m)
    44         update(rt<<1, l, m, x, y, v);
    45     if(m<y)
    46         update((rt<<1)+1, m+1, r, x, y, v);
    47     tree[rt]=tree[rt<<1]+tree[(rt<<1)+1];
    48 }
    49 
    50 int main()
    51 {
    52     int T;
    53     scanf("%d", &T);
    54     for(int k=1; k<=T; k++)
    55     {
    56         scanf("%d%d", &n, &q);
    57         int x, y, v;
    58         build(1, 1, n);
    59         memset(t, -1, sizeof(t));
    60         for(int i=0; i<q; i++)
    61         {
    62             scanf("%d%d%d", &x, &y, &v);
    63             int mi=x<y?x:y;
    64             int ma=x>y?x:y;
    65             update(1, 1, n, mi, ma, v);
    66         }
    67         printf("Case %d: The total value of the stick is %d.
    ", k, tree[1]);
    68     }
    69     return 0;
    70 }
  • 相关阅读:
    用户(三)
    首页和token验证(二)
    项目初始化和登录退出(一)
    VSCode设置vue/react模板
    Git操作
    C#可视化程序设计第三章(1,2)
    C#可视化程序设计第二章(3,4)
    SQL数据库第五章
    C#可视化程序设计第一章
    SQL数据库第四章
  • 原文地址:https://www.cnblogs.com/qyy-goodluck/p/4353178.html
Copyright © 2020-2023  润新知