用的二分,哪有错啊,急急急!!!
查看原帖
用的二分,哪有错啊,急急急!!!
866969
telankesi楼主2022/12/25 20:39
#include <stdio.h>
int n;
double a[100010],b[100010],p;
int main() {
	double q=0;
	scanf("%d %lf", &n, &p);
	for (int i = 0; i < n; i++) {
		scanf("%lf %lf", &a[i], &b[i]);
		q += a[i];
	}
	if (q > p) {
		double l = 0, r = 1.0e12, t;
		while (r - l >= 1.0e-6) {
			t = (r + l) / 2;
			double sum = 0;

			for (int i = 0; i < n; i++) {
				if (b[i] < a[i] * t)sum += t * a[i] - b[i];

			}
			if (sum > t)r = t;
			else l = t;
		}
		printf("%.10lf", r);
	}
	else printf("-1");
	return 0;

}
2022/12/25 20:39
加载中...