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

    题意:原本都是1,然后区间更新,最后求值

    (ps:这个题卡了2 3个月,主要还是没有理解之前的线段树,后来又忘了,今日虽然过了,但仍有些地方没有想通)

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn=1e5+7;
    typedef long long ll;
    int sum[maxn<<2],lazy[maxn<<2];
    
    void build(int i,int l,int r)
    {
        lazy[i]=1;
        if(l==r){
            sum[l]=1;
            return ;
        }
        int mid=(l+r)>>1;
        build(i<<1,l,mid);
        build(i<<1|1,mid+1,r);
        sum[i]=sum[i<<1]+sum[i<<1|1];
    }
    
    void pushdown(int i,int len)
    {
        if(lazy[i]){
            lazy[i<<1]=lazy[i];
            lazy[i<<1|1]=lazy[i];
            sum[i<<1]=lazy[i]*(len-(len>>1));
            sum[i<<1|1]=lazy[i]*(len>>1);
            lazy[i]=0;
        }
    }
    void update(int i,int l,int r,int val,int L,int R)
    {
        if(l>=L&&r<=R){
            lazy[i]=val;
            sum[i]=val*(r-l+1);
            return ;
        }
        pushdown(i,(r-l+1));
        int mid=(l+r)>>1;
        if(L<=mid) update(i<<1,l,mid,val,L,R);
        if(R>mid) update(i<<1|1,mid+1,r,val,L,R);
        sum[i]=sum[i<<1]+sum[i<<1|1];
    }
    
    int query(int i,int l,int r,int L,int R)
    {
        if(l>=L&&r<=R){
            return sum[i];
        }
        pushdown(i,(r-l+1));
        int mid=(l+r)>>1;
        int ans=0;
        if(L<=mid) ans+=query(i<<1,l,mid,L,R);
        else if(R>mid) ans+=query(i<<1|1,mid+1,r,L,R);
        return ans;
    }
    int main()
    {
        int t;
        int cas=1;
        scanf("%d",&t);
        while(t--){
            int n,m;
            scanf("%d%d",&n,&m);
            memset(sum,0,sizeof(sum));
            memset(lazy,0,sizeof(lazy));
            build(1,1,n);
            for(int i=0;i<m;i++){
                int a,b,c;
                scanf("%d%d%d",&a,&b,&c);
                update(1,1,n,c,a,b);
            }
            printf("Case %d: The total value of the hook is %d.
    ",cas++,query(1,1,n,1,n));
        }
        return 0;
    }
    /*
    1
    10
    2
    1 5 2
    5 9 3
    */
  • 相关阅读:
    bzoj2101:[USACO2010 DEC]TREASURE CHEST 藏宝箱
    P3976 [TJOI2015]旅游(未完成)
    洛谷 P 5 3 0 4 [GXOI/GZOI2019]旅行者
    NOIP原题 斗地主(20190804)
    P2860 [USACO06JAN]冗余路径Redundant Paths
    vue中的插槽(slot)
    vue动态绑定class
    发现一个ps抠毛发简单快捷高质量的方法
    propsData传递数据
    sort排序原理
  • 原文地址:https://www.cnblogs.com/lalalatianlalu/p/8322128.html
Copyright © 2011-2022 走看看