hdu 1450 线段树二分查找,形象为非连续区间的缩小与确定(不能判断长度为1的连续段所以最后要特判)
开区间好难理解,还是用闭区间吧
int middl(int x,int y,int cnt)
{
int l=x,r=y;
int ans;
while(r-l>1)
{
int mid=(r+l)/2;
if(quer(1,0,n-1,x,mid)>=cnt)
{
r=mid,ans=mid;
}
else
{
l=mid;
}
}
if(quer(1,0,n-1,x,l)==cnt) ans=l;
else ans=r;
return ans;
}
本文介绍如何使用线段树数据结构进行非连续区间查询,并特别关注如何处理长度不为1的连续区间,通过实例代码middl()函数详细解释了二分查找的实现过程。

385

被折叠的 条评论
为什么被折叠?



