【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; }