二分模版
发布日期:2021-05-07 07:56:14 浏览次数:32 分类:原创文章

本文共 491 字,大约阅读时间需要 1 分钟。

二分模版

求下边界(第一个满足条件的)

int find_low(int x){   	int mid,l=1,r=n;	while(l<=r)	{   		mid=l+(r-l)/2;		if(a[mid]<x) l=mid+1;		else r=mid-1;	}	return l;}

求上边界(最后一个满足条件的)

int find_up(int x){   	int mid,l=1,r=n;	while(l<=r)	{   		mid=l+(r-l)/2;		if(a[mid]<=x) l=mid+1;		else r=mid-1;	}	return l;}

实数二分

bool check(double x){   	...//由题意判断	return true;}double binary(double x){   	double mid,l=0,r=1e9;	while(r-l>=eps)	{   		mid=(l+r)>>1;		if(check(mid)) l=mid; //这是单调递增时的二分边界修改		else r=mid;	}	return l;}
上一篇:Codeforces Round 89 (Rated for Div. 2)
下一篇:牛客:栗酱的不等式

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年03月31日 01时05分31秒