关于询问修改时的一些奇怪的写法
查看原帖
关于询问修改时的一些奇怪的写法
67493
lxzy_楼主2020/10/25 00:53

想问一下各位大佬这样子写行吗:

inline int Change(int k,int pos)
{
	Segment_Tree t;
	t.sum=s[k<<1].sum+s[k<<1|1].sum;
	t.left=Max(s[k<<1].left,s[k<<1].sum+s[k<<1|1].left);
	t.right=Max(s[k<<1|1].right,s[k<<1|1].sum+s[k<<1].right);
	t.cal=Max(s[k<<1].sum,Max(s[k<<1|1].sum,s[k<<1].right+s[k<<1|1].left));
	if(pos==0) s[k]=t;
	else return t.cal;
}
inline void Update(int k,int l,int r,int p,int v)
{
	if(l==r){
		if(l!=p) return ;
		s[k].sum=v;
		s[k].cal=v;
		s[k].left=v;
		s[k].right=v;
		return ;
	}
	int mid=(l+r)>>1;
	Update(k<<1,l,mid,p,v);
	Update(k<<1|1,mid+1,r,p,v);
	Change(k,0);
}
inline int Query(int k,int l,int r,int x,int y)
{
	if(x>r||y<l) return 0;
	if(x<=l&&r<=y) return s[k].cal;
	int mid=(l+r)>>1;
	return Change(k,1);
}
2020/10/25 00:53
加载中...