QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#579937 | #9162. COVID tests | liuziao | 10 | 267ms | 15472kb | C++23 | 3.3kb | 2024-09-21 19:23:36 | 2024-09-21 19:23:36 |
Judging History
answer
#include <bits/stdc++.h>
// #define int int64_t
const int kMaxN = 1e3 + 5;
int n;
int trans[kMaxN][kMaxN];
double p, pw[kMaxN], f[kMaxN][kMaxN];
bool test_students(std::vector<bool> mask) {
assert(mask.size() == (size_t)n);
std::string mask_str(n, ' ');
for (int i = 0; i < n; i++) mask_str[i] = mask[i] ? '1' : '0';
printf("Q %s\n", mask_str.c_str());
fflush(stdout);
char answer;
scanf(" %c", &answer);
return answer == 'P';
}
bool ask(std::vector<int> vec) {
std::vector<bool> mask(n);
for (auto x : vec) mask[x] = 1;
return test_students(mask);
}
void solve(std::vector<int> v1, std::vector<int> v2, std::vector<bool> &answer) {
static bool vis[kMaxN] = {0};
int a = (int)v1.size(), b = (int)v2.size();
if (!a) return;
if (b == 1) {
answer[v2[0]] = ask({v2[0]});
v1.erase(std::lower_bound(v1.begin(), v1.end(), v2[0]));
solve(v1, {}, answer);
} else if (!b) {
int k = trans[a][b];
std::vector<int> vec;
for (int i = a - k; i < a; ++i) vec.emplace_back(v1[i]);
if (!ask(vec)) {
for (int i = 1; i <= k; ++i) v1.pop_back();
solve(v1, {}, answer);
} else {
solve(v1, vec, answer);
}
} else {
int k = trans[a][b];
std::vector<int> vec;
for (int i = b - k; i < b; ++i) vec.emplace_back(v1[i]);
if (!ask(vec)) {
for (auto x : v1) vis[x] = 1;
for (auto x : vec) vis[x] = 0;
std::vector<int> tmp;
for (auto x : v1)
if (!vis[x])
tmp.emplace_back(x);
for (int i = 1; i <= k; ++i) v2.pop_back();
solve(tmp, v2, answer);
} else {
solve(v1, vec, answer);
}
}
}
std::vector<bool> find_positive(bool op) {
if (!op) {
std::vector<bool> answer(n);
for (int i = 0; i < n; ++i) {
std::vector<bool> vec(n);
vec[i] = 1;
answer[i] = test_students(vec);
}
return answer;
} else {
std::vector<int> vec;
std::vector<bool> answer(n);
for (int i = 0; i < n; ++i) vec.emplace_back(i);
solve(vec, {}, answer);
return answer;
}
}
void prework() {
pw[0] = 1;
for (int i = 1; i <= n; ++i) pw[i] = pw[i - 1] * (1 - p);
for (int i = 1; i <= n; ++i) {
f[i][0] = 1e9, f[i][1] = f[i - 1][0];
for (int j = 2; j <= i; ++j) {
f[i][j] = 1e18;
for (int k = 1; k <= j; ++k) {
double pr = (pw[k] - pw[j]) / (1 - pw[j]); // 选的 k 个没有的概率
double val = pr * f[i - k][j - k] + (1 - pr) * f[i][k] + 1;
if (val < f[i][j]) {
f[i][j] = val, trans[i][j] = k;
}
}
}
for (int j = 1; j <= i; ++j) {
double pr = pw[j];
double val = pr * f[i - j][0] + (1 - pr) * f[i][j] + 1;
if (val < f[i][0]) {
f[i][0] = val, trans[i][0] = j;
}
}
}
}
int32_t main() {
int T;
scanf("%d %lf %d", &n, &p, &T);
if (T > 1) prework();
for (int i = 0; i < T; i++) {
std::vector<bool> answer = find_positive(T > 1);
assert(answer.size() == (size_t)n);
std::string answer_str(n, ' ');
for (int j = 0; j < n; j++) answer_str[j] = answer[j] ? '1' : '0';
printf("A %s\n", answer_str.c_str());
fflush(stdout);
char verdict;
scanf(" %c", &verdict);
if (verdict == 'W') exit(0);
}
return 0;
}
詳細信息
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 7ms
memory: 5780kb
input:
1000 0.789673 1 P N P P P P P P N P P N P N P P P P P N P P P P P P N P P P P P P P P P P P P P P P P P P N N N P P P P N P P P P N N P P P N P P P P N P P P P P N N P N P P P P P N P P P P P P P P P P P P P P P P P P N N P N P P P P P P P P N P N P P P N N P P P P P P P P P P P P P P P P P P P P N ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #2:
score: 10
Accepted
time: 7ms
memory: 5952kb
input:
1000 0.686378 1 N P N N N P N N P N P P N N P P P P N P P P N P P P N N P N P P P N N N P N P P P N P P P P P P N N P P P N P P P P P P P P P P P P P P P P P P N N P P N N N P P N P N P P P P P N P N N P P P N P N N P N P P P P N P N P P P P N P P N P P P N P N P P N P N N P P N P N P P N N P N N P ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #3:
score: 10
Accepted
time: 6ms
memory: 5780kb
input:
1000 0.873862 1 P P P P P P P P P P P P P P P P P P P P N P P P P P P P P P P P P P P P N P P P P P P P P P N P P P P P P P P P P P P P N P P P P P P P P P N P P P N P P N P P P P P P N P P P P P N P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P N P P P P P N P P N P P P P P P P P ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #4:
score: 10
Accepted
time: 8ms
memory: 5776kb
input:
1000 0.669578 1 P P N P P P P P N P N P P P N P P P P P P P N P P P P N N P N P N P P N P P N P P N P N P P P P P P P P P P P P P N N P P N P P N N P P N N P N P N P N P P N N P P P P P P P P P P N P P N P P N P P P P P P N P P P P N N N P N P P N P P N N P P N P P P N P P N P P P P P N P P N P P P ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #5:
score: 10
Accepted
time: 2ms
memory: 5980kb
input:
1000 0.907052 1 P P P P P P P N P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P N P P P P N P P P P P P P P P P P P N P P P P P P P P P P P P P P P P P P P P P P N P P P P P N P P P P P P P P P N P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P N P P P N P P P P N N P ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #6:
score: 10
Accepted
time: 0ms
memory: 5828kb
input:
1000 0.844418 1 P P P P P P P P P P P P N P P P P P P N P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P N P P P P P N P P P N P P P P P N P P P P P P N P P P N P N P P N P P P N P P N P P P N N N P P P P N N P N N P P P P P P P N P N P P P P N P P P P P P P P P P P P P P P P P P ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #7:
score: 10
Accepted
time: 0ms
memory: 6112kb
input:
1000 0.533576 1 P P P N N N N P P N N P N P N P P N P N N P N P N P P N P N P N P P P P N N N P P P P P N N P P N P P P P P N P P P P N N N N N P N P P P N P N P P P N P P P P N P N P P N N P N N P N P P N N P N P P N N P N N P N N P P N N N N P N P N N P N N P P N P P P P P N N N P P N P N P N P P ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #8:
score: 10
Accepted
time: 0ms
memory: 6080kb
input:
1000 0.415944 1 N N N N N N N P N N P N N P N P N N N P N N N N N N N N N P N N N N P P P P N P N N P N N P N N P P N P P P N N P N P N N N N N P N P N P N P N N N P N N N N P N N P P P P P N N N P P N N N P N N P N P P P N P P N P P P N P N P P P P P N N N P P P P P P P P N N N P P N N N N N N P P ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #9:
score: 10
Accepted
time: 4ms
memory: 6108kb
input:
1000 0.596017 1 P N P P N N P N N P P P N P N N P P P N P N P N N N P N N P N N P N P P P N P P N P P P N P N P P P N P N N P P P N P N N N P N N N P P P N P P P N N P N N P P N N P N P N N P N N P N P P N N P P P P N P P P N N P P P P P P N P P P N P P N P P P P P P P P N P P P P N N P P P N P N P ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #10:
score: 10
Accepted
time: 2ms
memory: 6084kb
input:
1000 0.157686 1 N N N N N N N N N N N N N P N N N P P N N P N N N N P N N N N N N N N N N N P N N N P P N N P N P N N N N N P N N N N N N N N N N N N N N N N N N P N N N N N N N N N N N N N N N P P N N N N N N N P P N N N N N N N N N P P P P N N N N N N N N N N N N N N N N N N P N N P N N N N N P N ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #11:
score: 10
Accepted
time: 7ms
memory: 5932kb
input:
1000 0.380215 1 N N N P N N N P N N P N N N P P N P N N N P P P N P P N N N P N N N P N N N P P P P N N N N N P P N N N N N N N N N N N N N N P P N N N N P P N N N P N N N N N P N P N N P N N N N P N N N N P P P P P P P N N N N N N N N N N P N N P N N N P N N N N N N N N N P N P N P N N P P N N P P ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #12:
score: 10
Accepted
time: 3ms
memory: 5828kb
input:
1000 0.432565 1 P N P N N P N N N P P P N P P N N N N N N N N N P P P N P P N N P P P P N P P N N N N P P P P N P N N P P P N N N N P N P N P N P N P P N N P N N P N N N P N P N N N P N N P N P N N N P N N P P P P P P N P N N N N N N N P P N P N N N N P P P N P N N P P P N P P P P P P N P N P P N P ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #13:
score: 10
Accepted
time: 8ms
memory: 5780kb
input:
1000 0.509199 1 P P N P N N N P P N N N N N P N N P P N P P N P P P P P N N P N P P N P P P P P P P P P P N P P P N N P N P P N P N P N N P N P N P N N N N N P P N N N P P P N N P P P P N N N N P P N P N N N P P P P P N N N P P N P P N P N P P P N N P P N N N N N N P P P N N P P N N N N N N P P N N ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #14:
score: 10
Accepted
time: 0ms
memory: 5848kb
input:
1000 0.381646 1 N N N P N N N N P P P N N N N N P N N N P N P N P N P N N N N N N N P P N N N N P P N N N N N P N N N N P N P N N N N P P P N P P N P P P N P N P P P N N N N N P N N P P N P P N P P N N N N P P N N P N N N N N P N N P P N N N N N P P N P N N P N N N P P N N P N N N N P P N N N N N P ...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #15:
score: 10
Accepted
time: 5ms
memory: 5824kb
input:
1000 0.42815 1 N P P N P N P P P N N P N N P N N P P P N N N N P P P N N N P P N P N N P N N N P P N N N N P N N P P N P N N N N P N N N N N P N P P N P P P P N N N P P P N P P P N P P N P N N N P N N P N N P P N P P N N P N N P P P P P P P N N N P N P N P N N N N N N N P N N N P N P P P P N N N P N...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #16:
score: 10
Accepted
time: 0ms
memory: 5780kb
input:
1000 1 1 P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Test #17:
score: 10
Accepted
time: 0ms
memory: 5828kb
input:
1000 0 1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N...
output:
Q 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 1.0 1.0 translate:success
Subtask #2:
score: 0
Wrong Answer
Test #18:
score: 0
Wrong Answer
time: 267ms
memory: 15472kb
input:
1000 0.001 300 N N C P N N N N N N N N N N W
output:
Q 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
result:
points 0.0 0.0 translate:wrong