特大喜讯,我找到了让线段树常数小一个n的方法

麻麻再也不用担心我被卡常

//大常数写法
int Find(int rt,int l,int r,int s,int t){
	if(!tr[rt].maxi || !rt || t<s)return 0;
	if(l==r)return tr[rt].maxi;
	int mid=(l+r)>>1,res=0;
	if(s<=mid)res=Find(LCH,l,mid,s,t);
	if(t>mid)res=max(res,Find(RCH,mid+1,r,s,t));
	return res;
}
//这样写常数小了一个n
int Find(int rt,int l,int r,int s,int t){
	if(!tr[rt].maxi || !rt || t<s)return 0;
	if(s<=l && t>=r)return tr[rt].maxi;
	int mid=(l+r)>>1,res=0;
	if(s<=mid)res=Find(LCH,l,mid,s,t);
	if(t>mid)res=max(res,Find(RCH,mid+1,r,s,t));
	return res;
}

实践效果如下

image

posted @   Delov  阅读(118)  评论(8编辑  收藏  举报
相关博文:
阅读排行:
· JDK 24 发布,新特性解读!
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· SQL Server如何跟踪自动统计信息更新?
· windows下测试TCP/UDP端口连通性
点击右上角即可分享
微信分享提示