17号点TLE,为什么,求解!
查看原帖
17号点TLE,为什么,求解!
1279073
nowornever0625楼主2024/10/29 08:12
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n, p;

struct node {
	int a, b;
} d[N];

bool check(double x) {
	double tot = x * p, sum = 0;
	for (int i = 0; i < n; i++) {
		if (d[i].b > x * d[i].a)
			continue;
		sum += d[i].a * x - d[i].b;
	}
	return sum <= tot;
}

int main() {
	cin >> n >> p;
	double sum = 0;
	for (int i = 0; i < n; i++) {
		cin >> d[i].a >> d[i].b;
		sum += d[i].a;
	}
	double l = 0, r = 1e30, mid, ans = -1;
	if (p > sum) {
		cout << "-1" << endl;
		return 0;
	}
	while (r - l > 1e-6) {
		mid = (l + r) / 2;
		if (check(mid)) {
			ans = mid;
			l = mid;
		} else
			r = mid;
	}
	printf("%.10f", ans);
	return 0;
}
2024/10/29 08:12
加载中...