蒟蒻求助SPJ
查看原帖
蒟蒻求助SPJ
120324
Yansuan_HCl楼主2021/6/12 15:05

第12个点:

Wrong Answer. wrong answer The answer is wrong: expected = 0.650000, found = 0.660000

问题是0.01的误差怎么被卡掉了 代码

#include <bits/stdc++.h>
#define ms(x,v) memset(x, v, sizeof(x))
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
typedef double db;
void read(ll &l) { scanf("%lld", &l); }
void read(int &i) { scanf("%d", &i); }
void read(db &d) { scanf("%lf", &d); }

int n, k;
db l[10005];

// O(n logk)

bool check(db x) {
	int ans = 0;
	for (int i = 1; i <= n; ++i) {
		ans += (int)(l[i] / x);
	}
	if (ans >= k) return true;
	return false;
}

int main() {
	read(n); read(k);
	for (int i = 1; i <= n; ++i) { 
		read(l[i]); l[i] *= 100;
	}
	
	db l = 0, r = 10000000.00;
	while (r - l >= 1) {
		db mid = (l + r) / 2;
		if (check(mid)) {
			l = mid;
		} else {
			r = mid - 1;
		}
	}
	printf("%.2lf", r / 100);
	return 0;
}
2021/6/12 15:05
加载中...