有没有大佬可以帮忙看一下
查看原帖
有没有大佬可以帮忙看一下
1139034
ingzzc楼主2024/4/21 14:24
#include<bits/stdc++.h>
using namespace std;
long long n;
double p;
double a[100010],b[100010];
long long check(double m){
    double cnt = 0;
    for(int i = 1;i <= n;i++){
        if(a[i]*m > b[i]){
        	cnt += (a[i] * m - b[i]);
		}
    }
    cnt -= p * m;
    return cnt <= p;
}
int main(){
    cin>>n>>p;
    for(int i = 1;i <= n;i++){
    	cin>>a[i]>>b[i]; 
	}
    double c = 0;
    for(int i = 1;i <= n;i++){
    	c += a[i];
	}
    if(c - p <= 0.0){
        cout<<"-1";
        return 0;
    }
    double l = 0.0;
    double r = 3000000001.0;
    double mid,ans;
    while(l <= r-1e-6){
        mid = (l+r)/2;
        if(check(mid)){
            l = mid;
            ans = mid;
        }
        else {
            r = mid;
        }
    }
    cout<<ans<<"\n";
    return 0;
}
2024/4/21 14:24
加载中...