代码采用了二分答案 help
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[100000],p[100000];
bool js(double x)
{
double t=x*m;
for(int i=1;i<=n;i++)
{
if(x*a[i]>p[i])
{
t-=(x*a[i])-p[i];
}
}
if(t>=0)return true;
else return false;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
cin>>p[i];
}
double l=1e-6;
double r=1e18,mid;
mid=(l+r)/2;
if(js(mid))
{
cout<<-1;
return 0;
}
while(l<r)
{
mid=(l+r)/2;
if(js(mid))l=mid+1e-6;
else r=mid-1e-6;
}
printf("%.10lf",r);
return 0;
}
向各位大佬求助