警示后人(merge)
查看原帖
警示后人(merge)
928604
Tiffake楼主2024/10/25 19:25

merge 函数计算前后缀最大值时只需要取最大值即可:

inline node merge(node&s,node x,node y){
	s.pre=max(x.sum+y.pre,x.pre),s.suf=max(y.sum+x.suf,y.suf);
	s.res=max(x.suf+y.pre,max(x.res,y.res)),s.sum=x.sum+y.sum;
	return s;
}

而不是:

inline node merge(node&s,node x,node y){
	s.pre=x.sum==x.pre?x.sum+y.pre:x.pre;
	s.suf=y.sum==y.suf?y.sum+x.suf:y.suf;
	s.res=max(x.suf+y.pre,max(x.res,y.res)),s.sum=x.sum+y.sum;
	return s;
}
2024/10/25 19:25
加载中...