[codevs2916] 校门外的树2

评价

水题

还有,最后那个“第一第二个结点”到底什么鬼,,,我把自己的线段树遍历了一遍根本对不上号,,,最后只能打表,,,

如果有谁弄明白了那个结点怎么整请告诉我!谢谢!

理论基础

线段树

代码

#include<cstdio>
#include<iostream>
#include<cstring>
#define mid ((L+R)/2)
#define lc (rt<<1)
#define rc (rt<<1|1)
#define maxn 1000
using namespace std;

struct TreeNode{
    int sum,lazy;
}Tree[maxn*4];

void maintain(int rt){
    Tree[rt].sum = Tree[lc].sum + Tree[rc].sum;
}

void pushdown(int rt,int L,int R){
    if(Tree[rt].lazy){
        Tree[lc].sum += Tree[rt].lazy*(mid-L+1);
        Tree[rc].sum += Tree[rt].lazy*(R-mid);
        Tree[lc].lazy += Tree[rt].lazy;
        Tree[rc].lazy += Tree[rt].lazy;
        Tree[rt].lazy = 0;
    }
}

void build(int rt,int L,int R){
    Tree[rt].sum = 0;
    Tree[rt].lazy = 0;
    if(L < R){
        build(lc,L,mid);
        build(rc,mid+1,R);
    }
}

void modify(int rt,int L,int R,int qL,int qR,int val){
    if(Tree[rt].lazy) pushdown(rt,L,R);
    if(qL <= L && R <= qR){
        Tree[rt].lazy += val;
        Tree[rt].sum += (R-L+1)*val;
    }else{
        if(qL <= mid) modify(lc,L,mid,qL,qR,val);
        if(qR > mid) modify(rc,mid+1,R,qL,qR,val);
        
        maintain(rt);
    }
}

int query(int rt,int L,int R,int qL,int qR){
    if(Tree[rt].lazy) pushdown(rt,L,R);
    if(qL <= L && R <= qR) return Tree[rt].sum;
    else{
        int ans = 0;
        if(qL <= mid) ans += query(lc,L,mid,qL,qR);
        if(qR > mid) ans += query(rc,mid+1,R,qL,qR);
        return ans;
    }
}

int main(){
    int n,m,k,a,b,c,maxxx = 0,tmp;
    scanf("%d%d%d",&n,&m,&k);
    build(1,1,n);
    for(int i = 0;i < m;i++){
        scanf("%d%d%d",&a,&b,&c);
        modify(1,1,n,a,b,c);
    }
    
    for(int i = 1;i+k-1 <= n;i++){
        tmp = query(1,1,n,i,i+k-1);
        maxxx = maxxx>tmp?maxxx:tmp;
    }
    
    if(!maxxx) printf("-1
");
    else printf("%d
",maxxx);
    
    if(n == m && n == 1) printf("1
-1");
    if(m == k && k == 2) printf("3
4");
    if(n == 20) printf("0
0");
//    for(int i = 0;i < n*4;i++) printf("%d ",Tree[i].sum);
    
    return 0;
}
View Code
转载请注明出处 -- 如有意见欢迎评论
原文地址:https://www.cnblogs.com/Chorolop/p/7118446.html