关于SPJ的误差判断问题
  • 板块P1577 切绳子
  • 楼主songtj
  • 当前回复9
  • 已保存回复9
  • 发布时间2022/9/10 09:23
  • 上次更新2023/10/27 12:09:35
查看原帖
关于SPJ的误差判断问题
735387
songtj楼主2022/9/10 09:23

R.T\Large {\mathcal{R} . \mathcal{T}}


这是本蒟蒻的程序:

#include <bits/stdc++.h>
using namespace std;

int n, k;
int s[11451];
int l, r, mid;
double in;

template <typename _Ip>
inline void read(_Ip &x) {
    char ch = getchar(), sgn = 0; x = 0;
    while (ch ^ '-' && !isdigit(ch)) ch = getchar();
    if (ch == '-') ch = getchar(), sgn = 1;
    while (isdigit(ch)) x = (x<<3)+(x<<1) + (ch^48), ch = getchar();
    if (sgn) x = -x;
}

template <typename _Op>
inline void write(_Op x) {
	if (x < 0) putchar('-'), x = -x;
	if (x > 9) write(x / 10);
	putchar(x % 10 + '0');
}

inline bool check(int a) {
	int sum = 0;
	for (int i = 1; i <= n; ++i) {
		sum += s[i] / a;
	}
	return sum >= k;
}

int main() {
	read(n);read(k);
	for (int i = 1; i <= n; ++i) {
		scanf("%lf", &in);
		s[i] = in*100;
		r = max(s[i], r);
	}
	while (l <= r) {
		mid = (l+r+1) >> 1;
		if (mid == 0) break;
		if (check(mid)) l = mid+1;
		else r = mid-1;
	}
	printf("%.2lf", l*0.01);
	return 0;
}

这个程序的问题是,答案总会多出0.01,而在本题的题面中写道:

答案与标准答案误差不超过 0.01 或者相对误差不超过 1% 即可通过。

那么这个程序是应该能AC的,但是这个程序只能得70分

评测记录

#8测试数据

测试点8的正确答案为 1.00,而我的程序输出为 1.01,但是WA了。

请求修复SPJ

@小粉兔

@chen_zhe

2022/9/10 09:23
加载中...