求助,为什么开双重数组就会有一堆re啊
查看原帖
求助,为什么开双重数组就会有一堆re啊
540608
junzhaixing楼主2021/8/13 22:39
#include <iostream> 
#include<cstdio> 
#include <algorithm>
using namespace std;

double  p, sum = 0, w, L = 0, R = 1e10, mid;
int n;
double a[2][200010];//就这里
bool f(double x) {
	w = 0;
	for (int i = 1; i <= n; i++)
		if (x*a[1][i] > a[2][i]) 
        w+=(x * a[1][i] - a[2][i]);
    return w <= p * x;
}

int main() {
	cin >> n >> p;
	for (int i = 1; i <= n; i++) {
		cin >> a[1][i] >> a[2][i];
		sum += a[1][i];
	}
	if (sum <= p) {
		cout << -1.000000;
		return 0;
	}

	while (R - L > 1e-6) {
		mid = (R + L) / 2;
		if (f(mid))
			L = mid;
		else
			R = mid;
	}

	printf("%.6lf ", L);

	return 0;
}

如果把双重数组改成a,b两个数组就能过,否则就只有40分,其他都re,请问这是为啥啊?

2021/8/13 22:39
加载中...