codeforces#242B-Megacity-二分

http://codeforces.com/problemset/problem/424/B

给n,s

给n个城市,以及里面人口


坐标中心0,0 有s人,

现在扩宽以0,0为中心,半径为r 圈一个圈,使得圈内人口大于等于1e6,求最小的r


直接二分R,每次判断够不够1e6

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

const double pi=acos(-1.0);
double eps=0.000001; 
__int64 min(__int64 a,__int64 b)
{return ab?a:b;} 

__int64 n;
struct node
{
	__int64 x,y,z;
	double dis;
};
node tm[1005]; 
__int64 need=0;
__int64 bin(double x)
{
	__int64 sum=0;
	__int64 i;
	for (i=1;i<=n;i++)
	{
		if (tm[i].dis<=x)
			sum+=tm[i].z;
		else
			break;
		if (sum>=need) return 1;
	}
		return 0;
}
bool cmp(node a,node b)
{return a.diseps)
	{
		double mid=(l+r)/2;
		if (bin(mid))
			r=mid,ans=mid;
		else
			l=mid;
	}
	
	if (ans==-1) printf("-1\n");
	else
	
	printf("%.6lf\n",sqrt(ans));
	return 0;
	
}


你可能感兴趣的:(CF,其他,二分)