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; 
    }
    
  • 相关阅读:
    Android中 requestCode与resultCode的区别与用法
    Activity与Fragment之间的通信
    关于解决 从相册中选择照片后无法剪切图片以及无法加载图片的问题
    Codeforces Round #313 (Div. 2) C. Geralds Hexagon
    HDU 2669 Romantic
    HDU 1405 The Last Practice
    HDU Wolf and Rabbit
    LightOJ 1104 Birthday Paradox
    11181
    Tr A
  • 原文地址:https://www.cnblogs.com/fxq1304/p/13052618.html
Copyright © 2011-2022 走看看