线段树

这显然是一颗空树

namespace segment_tree{
	#define lid T[id].ls
	#define rid T[id].rs
	#define mid ((T[id].l+T[id].r)>>1)
	const int NUM=1e6+10;
	struct tree{
		int l,r,ls,rs;
		
	}T[NUM];
	int root,stot;
	void pushup(int id){
		
	}
	void pushdown(int id){
		
	}
	void build(int &id,int l,int r){
		T[id].l=l,T[id].r=r;
		if(!id) id=++stot;
		if(l==r){
			
			return;
		}
		build(lid,l,mid);
		build(rid,mid+1,r);
		pushup(id);
	}
	void update(int &id,int l,int r,int val){
		if(!id) id=++tot;
		if(l<=T[id].l&&T[id].r<=r){
			
			return;
		}
		pushdown(id);
		if(l<=mid) update(lid,l,r,val);
		if(r>mid) update(rid,l,r,val);
		pushup(id);
	}
	int query(int id,int l,int r){
		if(l<=T[id].l&&T[id].r<=r){
			return 0;
		}
		pushdown(id);
		int ans=0;
		if(l<=mid) ans+=query(lid,l,r);
		if(r>mid) ans+=query(rid,l,r);
		return ans;
	}
}
using namespace segment_tree;
posted @ 2026-07-09 16:22  LZYXT  阅读(8)  评论(0)    收藏  举报