QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#297949 | #958. Lockout vs tourist | Hunster | WA | 1ms | 3788kb | C++23 | 942b | 2024-01-05 14:31:33 | 2024-01-05 14:31:34 |
Judging History
answer
#include <bits/stdc++.h>
int n;
int w[22];
double f[1 << 22];
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%d", &w[i]);
for (int mask = 0; mask < 1 << n; mask++) {
const int t = __builtin_popcount(mask);
if (t <= 1) continue;
std::vector<double> a, b;
for (int i = 0; i < n; i++)
if (mask >> i & 1) {
a.push_back(w[i]);
b.push_back(f[mask ^ (1 << i)]);
}
double max = 0;
double sum1 = 0, sum0 = -1;
for (int i = 0; i < t; i++) {
if (a[i] <= b[i])
max = std::max(max, a[i]);
else {
sum1 += 1 / (a[i] - b[i]);
sum0 += a[i] / (a[i] - b[i]);
}
}
max = std::max(max, sum0 / sum1);
f[mask] = max;
}
printf("%.10lf\n", f[(1 << n) - 1]);
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 3728kb
input:
2 6 7
output:
3.2307692308
result:
ok found '3.2307692', expected '3.2307692', error '0.0000000'
Test #2:
score: 0
Accepted
time: 1ms
memory: 3788kb
input:
3 1 1 1
output:
0.8333333333
result:
ok found '0.8333333', expected '0.8333333', error '0.0000000'
Test #3:
score: 0
Accepted
time: 1ms
memory: 3692kb
input:
11 1 2 3 4 5 6 7 8 9 10 11
output:
9.4422713866
result:
ok found '9.4422714', expected '9.4422714', error '0.0000000'
Test #4:
score: 0
Accepted
time: 1ms
memory: 3732kb
input:
2 1 1000000000
output:
0.9999999990
result:
ok found '1.0000000', expected '1.0000000', error '0.0000000'
Test #5:
score: -100
Wrong Answer
time: 1ms
memory: 3788kb
input:
5 76 57 68 36 63
output:
62.8161435690
result:
wrong answer 1st numbers differ - expected: '63.3539651', found: '62.8161436', error = '0.0084892'