• HDU 1698 Just a Hook 区间更新 lazy标记


    lazy标记

      1 #include <iostream>
      2 #include <cstdio>
      3 #include <cstring>
      4 #include <sstream>
      5 #include <string>
      6 #include <algorithm>
      7 #include <list>
      8 #include <map>
      9 #include <vector>
     10 #include <queue>
     11 #include <stack>
     12 #include <cmath>
     13 #include <cstdlib>
     14 #include <conio.h>
     15 using namespace std;
     16 #define clc(a,b) memset(a,b,sizeof(a))
     17 #define inf 0x3f3f3f3f
     18 const int N=100010;
     19 const int MOD = 1e9+7;
     20 #define LL long long
     21 double const pi = acos(-1);
     22 void fre() {
     23     freopen("in.txt","r",stdin);
     24 }
     25 // inline int r() {
     26 //     int x=0,f=1;char ch=getchar();
     27 //     while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
     28 //     while(ch>='0'&&ch<='9') { x=x*10+ch-'0';ch=getchar();}return x*f;
     29 // }
     30 int n;
     31 struct  node{
     32     int l,r,sum;
     33     int lazy;
     34 }tree[N<<2];
     35 
     36 void pushdown(int rt){
     37     if(tree[rt].lazy!=0){
     38         tree[rt<<1].lazy=tree[rt<<1|1].lazy=tree[rt].lazy;
     39         tree[rt<<1].sum=(tree[rt<<1].r-tree[rt<<1].l+1)*tree[rt<<1].lazy;
     40         tree[rt<<1|1].sum=(tree[rt<<1|1].r-tree[rt<<1|1].l+1)*tree[rt<<1|1].lazy;
     41         tree[rt].lazy=0;
     42     }
     43 }
     44 
     45 void updata(int l,int r,int x,int L,int R,int rt){
     46     if(tree[rt].lazy==x) return;
     47     if(l<=L&&r>=R){
     48         tree[rt].lazy=x;
     49         tree[rt].sum=x*(R-L+1);
     50         return;
     51     }
     52     pushdown(rt);
     53     int mid=(L+R)>>1;
     54     if(r<=mid)
     55         updata(l,r,x,L,mid,rt<<1);
     56     else if(l>mid)
     57         updata(l,r,x,mid+1,R,rt<<1|1);
     58     else{
     59         updata(l,r,x,L,mid,rt<<1);
     60         updata(l,r,x,mid+1,R,rt<<1|1);
     61     }
     62     tree[rt].sum=tree[rt<<1].sum+tree[rt<<1|1].sum;
     63     return;
     64 }
     65 
     66 void build(int l,int r,int rt){
     67      tree[rt].l=l;
     68      tree[rt].r=r;
     69      tree[rt].lazy=1;
     70      if(l==r){
     71         tree[rt].sum=1;
     72         return;
     73      }
     74      int mid=(l+r)>>1;
     75      build(l,mid,rt<<1);
     76      build(mid+1,r,rt<<1|1);
     77      tree[rt].sum=tree[rt<<1].sum+tree[rt<<1|1].sum;
     78      return;
     79 }
     80 
     81 int main(){
     82     // fre();
     83     int T,q,l,r,x;
     84     scanf("%d",&T);
     85     int cas=1;
     86     while(T--){
     87         scanf("%d",&n);
     88         build(1,n,1);
     89         // for(int i=1;i<=18;i++)
     90         // {
     91         //     printf("%d
    ",tree[i].sum);
     92         // }
     93         // getch();
     94         scanf("%d",&q);
     95         while(q--){
     96             scanf("%d%d%d",&l,&r,&x);
     97             updata(l,r,x,1,n,1);
     98            // for(int i=1;i<=25;i++){
     99            //  printf("%d:%d
    ",i,tree[i].sum);
    100            // }
    101            // system("pause");
    102         }
    103         printf("Case %d: The total value of the hook is %d.
    ",cas++,tree[1].sum);
    104     }
    105     return 0;
    106 }
  • 相关阅读:
    servlet配置restful
    Servlet异步上传文件
    JQuery全选Prop(“check”,true)和attr("attr",true)区别
    登录FTP,下载并读取文件内容
    Get请求中文乱码的几种解决方式
    系统架构概念及思想2
    系统架构概念及思想1
    Harbor高可用
    Harbor基础
    Docker原理及使用
  • 原文地址:https://www.cnblogs.com/ITUPC/p/5585726.html
Copyright © 2020-2023  润新知