mxqz
  • 板块灌水区
  • 楼主LYqwq
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/1/20 16:53
  • 上次更新2023/10/28 11:46:35
查看原帖
mxqz
399116
LYqwq楼主2022/1/20 16:53
template<class tp>
class LineTree{
	public:
		LineTree(){}
		void build(int id,int l,int r){
			p[id].l=l,p[id].r=r;
			if(l==r){
				p[id].val=a[l];
				return;
			}
			int mid=l+r>>1;
			build(ls(id),l,mid);
			build(rs(id),mid+1,r);
			pushup(id);
		}
		void update(int id,int l,int r,tp val){
			if(l<=p[id].l && p[id].r<=r){
				brush(id,val);
				return;
			}
			pushdown(id);
			int mid=p[id].l+p[id].r>>1;
			if(l<=mid) update(ls(id),l,r,k);
			if(r>=mid+1) update(rs(id),l,r,k);
			pushup(id);
		}
		tp find(int id,int l,int r){
			if(l<=p[id].l && p[id].r<=r){
				return p[id].val;
			}
			int mid=p[id].l+p[id].r>>1;
			pushdown(id);
			tp res=0;
			if(l<=mid) res+=find(ls(id),l,r);
			if(r>=mid+1) res+=find(rs(id),l,r);
			return res;
		}
	private:
		struct node{
			int l,r;
			tp val,lazy;
		}p[N<<2];
		inline int ls(int id){return id<<1;}
		inline int rs(int id){return id<<1|1;}
		tp len(int id){
			return p[id].r-p[id].l+1;
		}
		void brush(int id,tp val){
			p[id].lazy+=val;
			p[id].val+=len(id)*val;
		}
		void pushup(int id){
			p[id].val=p[ls(id)].val+p[rs(id)].val;
		}
		void pushdown(int id){
			brush(ls(id),p[id].lazy);
			brush(rs(id),p[id].lazy);
			p[id].lazy=0;
		}
}tree<long long>;

rt,最下面那一行 }tree,long long>; 报错了,说 “应输入';'”,请问各位大佬,这是什么情况,怎么修复/kel

2022/1/20 16:53
加载中...