zoukankan      html  css  js  c++  java
  • 模版 单点修改,区间查询

    模板一:单点修改,区间求和
        模板题:hdu1166 敌兵布阵

    const int maxn=100010;
    int a[maxn],tree[4*maxn];
    
    void pushup(int o){
    	tree[o]=tree[o<<1]+tree[o<<1|1];
    }
    
    void build(int o,int l,int r){
    	if(l==r){
    		tree[o]=a[l];
    		return;
    	}
    	int mid=(l+r)>>1;
    	build(o<<1,l,mid);
    	build(o<<1|1,mid+1,r);
    	pushup(o);
    }
    
    void change(int o,int l,int r,int x,int k){
    	if(l==r){
    		tree[o]+=k;
    		return;
    	}
    	int mid=(l+r)>>1;
    	if(x<=mid) change(o<<1,l,mid,x,k);
    	else change(o<<1|1,mid+1,r,x,k);
    	pushup(o);
    }
    
    int query(int o,int l,int r,int ql,int qr){
    	if(ql<=l && r<=qr) return tree[o];
    	int mid=(l+r)>>1,ans=0;
    	if(ql<=mid) ans+=query(o<<1,l,mid,ql,qr);
    	if(qr>mid) ans+=query(o<<1|1,mid+1,r,ql,qr);
    	return ans; 
    }
    

    模板二:单点修改,区间最值
        模板题:hdu1754 I Hate It

    const int maxn=100010;
    int a[maxn],tree[4*maxn];
    
    void pushup(int o){
    	tree[o]=max(tree[o<<1],tree[o<<1|1]);
    }
    
    void build(int o,int l,int r){
    	if(l==r){
    		tree[o]=a[l];
    		return;
    	}
    	int mid=(l+r)>>1;
    	build(o<<1,l,mid);
    	build(o<<1|1,mid+1,r);
    	pushup(o);
    }
    
    void change(int o,int l,int r,int x,int k){
    	if(l==r){
    		tree[o]=k;
    		return;
    	}
    	int mid=(l+r)>>1;
    	if(x<=mid) change(o<<1,l,mid,x,k);
    	else change(o<<1|1,mid+1,r,x,k);
    	pushup(o);
    }
    
    int query(int o,int l,int r,int ql,int qr){
    	if(ql<=l && r<=qr) return tree[o];
    	int mid=(l+r)>>1,ans=-1;
    	if(ql<=mid) ans=max(ans,query(o<<1,l,mid,ql,qr));
    	if(qr>mid) ans=max(ans,query(o<<1|1,mid+1,r,ql,qr));
    	return ans; 
    }
    
  • 相关阅读:
    王者荣耀_KEY
    月亮之眼_KEY
    编号中的数学_KEY
    BZOJ1854_游戏_KEY
    BZOJ1059_矩阵游戏_KEY
    最小覆盖_KEY
    Dijkstra堆优化学习
    LuoguP1196_银河英雄传说_KEY
    BZOJ1207_打鼹鼠_KEY
    Codevs1380没有上司的舞会_KEY
  • 原文地址:https://www.cnblogs.com/fxq1304/p/13052618.html
Copyright © 2011-2022 走看看