【BZOJ4952】lydsy七月月赛 E
题解:傻题。。。二分答案即可,精度有坑。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
double eps=1e-9;
int n,t;
int d[1010],s[1010];
bool solve(double x)
{
double ret=0;
for(int i=1;i<=n;i++) ret+=d[i]/(s[i]+x);
return ret<t;
}
int main()
{
scanf("%d%d",&n,&t);
double l=-1e6,r=1e6+1e3,mid;
for(int i=1;i<=n;i++) scanf("%d%d",&d[i],&s[i]),l=max(l,1.0*d[i]/t-s[i]-eps);
for(int i=1;i<=40;i++)
{
mid=(l+r)/2;
if(solve(mid)) r=mid;
else l=mid;
}
printf("%.9lf",l);
return 0;
}