题目:
题意:
题面比较迷,大家自己去看题目好了
分析:
二分答案求我们的偏差是多少,而 c h e c k check check就用样例解释来代入判断
代码:
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define LL long long
#define ee 1e-14
using namespace std;
inline LL read() {
LL d=0,f=1;char s=getchar();
while(s<'0'||s>'9'){
if(s=='-')f=-1;s=getchar();}
while(s>='0'&&s<='9'){
d=d*10+s-'0';s=getchar();}
return d*f;
}
int s[1005],v[1005];
int n=read(),m=read();
bool check(double t)
{
double sum=0;
for(int i=1;i<=n;i++)
{
if(v[i]+t<=0) return 0;
sum+=s[i]/(v[i]+t);
}
return sum<=m;
}
int main()
{
for(int i=1;i<=n;i++) s[i]=read(),v[i]=read();
double l=-1e8,r=1e8;
for(int i=1;i<=100000;i++)
{
double mid=(l+r)/2;
if(check(mid)) r=mid;
else l=mid;
}
if(l<ee&&-l<ee) printf("%.12lf",0);
else printf("%.12lf",l);
return 0;
}