求助w16,18
查看原帖
求助w16,18
118511
zlnleo楼主2022/6/16 15:58

链接 https://www.luogu.com.cn/record/77458907

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int M=1e5+10;
const double minn=1e-6;
int L,N,K;
int n,p,rr;
double a[M],b[M];
bool check(double s){
	double res=s*p;

	for(int i=1;i<=n;++i){
		if(s*a[i]-b[i]>0)

		res-=s*a[i]-b[i];
	}
	if(res>0)
	{
		return 1;
	}
	else{
		return 0;
	}
}
int main() 
{
	cin>>n>>p;
	for(int i=1;i<=n;++i){
		cin>>a[i]>>b[i];
		rr+=a[i];
	}
	if(rr<=p){
		cout<<-1;
		return 0;
	}
	double l=0,r=1e10,mid;
	while(r-l>minn){
		mid=(l+r)/2;
		if(check(mid)){
			l=mid;
		}
		else{
			r=mid;
		}
	}
	cout<<l;
}
2022/6/16 15:58
加载中...