R.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的正确答案为 1.00,而我的程序输出为 1.01,但是WA了。
请求修复SPJ
@小粉兔
@chen_zhe