听说灌水区大佬多
  • 板块灌水区
  • 楼主Sun_Panther
  • 当前回复11
  • 已保存回复11
  • 发布时间2023/10/5 07:44
  • 上次更新2023/11/2 15:37:50
查看原帖
听说灌水区大佬多
969251
Sun_Panther楼主2023/10/5 07:44

P3743,95pts求调

#include<bits/stdc++.h>
using namespace std;
int n;
double p;
const int N=1e6+10;
double a[N],b[N];
double ans=-1;
double sum[N];
bool check(double x){
    double s=p*x;
    for(int i=1;i<=n;i++){
    	if(b[i]>=a[i]*x)continue;
    	s-=a[i]*x-b[i];
	}
	return s>=0;
}
int main(){
	double sump=0;
	cin>>n>>p;
	for(int i=1;i<=n;i++){
		cin>>a[i]>>b[i];
	}
	for(int i=1;i<=n;i++){
		sump+=a[i];
	}
	if(sump<=p){
		cout<<-1;
		return 0;
	} 
	double l=1e-9,r=100000,mid;
	while(r-l>=1e-9){
		mid=(l+r)/2;
		if(check(mid)){
			ans=max(mid,ans);
			l=mid+1e-9;
		}
		else r=mid-1e-9;
	}
	cout<<ans;
	return 0;
} 
2023/10/5 07:44
加载中...