求大神观摩
查看原帖
求大神观摩
1757147
hsl295931楼主2025/7/31 16:16
#include <iostream>
#include <iomanip>
using namespace std;
double p,A[100010],B[100010];
int n;
int F(double x){
	int i,j;
	double t1,t2 = 0.0;
	for(i = 1;i <= n;i++){
		if(x * A[i] > B[i]){
			t1 = x * A[i] - B[i];
			if(t1 > p * x){
				return -1;
			} 
			else {
				t2 += t1 / p;
			}
		} 
	}
	if(t2 > x){
		return -1;
	} 
	else{
		return 1;
	} 
}
int main(){
	int i,j;
	double l,r,mid;
	cin>>n>>p;
	for(i = 1;i <= n;i++){
		cin>>A[i]>>B[i];
	} 
	l = 0.0;r = 10000000000.0;
	if(F(r) == 1){
		cout<<-1;return 0;	
	}
	for(i = 1;i <= 1000;i++){
		mid = (l + r) / 2;
		if(F(mid) == 1){
			l = mid;
		} 
		else{
			r = mid;
		} 
	}
	cout<<fixed<<setprecision(20)<<l;
	return 0;
}
2025/7/31 16:16
加载中...