QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#594321 | #9237. Message | December456 | 72.847 | 191ms | 4084kb | C++17 | 2.9kb | 2024-09-27 21:26:45 | 2024-09-27 21:26:45 |
Judging History
answer
#include "message.h"
std::vector<bool> P(31);
std::vector<int> A;
void solve_alice(int l, int r, std::vector<bool> &C) {
if (l == r) {
return A.push_back(l);
}
if (l + 1 == r) {
return A.push_back(l), A.push_back(l + 1);
}
int mid = (l + r) >> 1, cntL = 0, cntR = 0, i;
for (i = l; i <= mid; i ++) {
cntL += !C[i];
}
for (i = mid + 1; i <= r; i ++) {
cntR += !C[i];
}
if (cntL << 1 > mid - l + 1) {
send_packet(std::vector<bool>(31, false));
solve_alice(l, mid, C);
for (i = mid + 1; i <= r && i - mid <= A.size(); i ++) {
if (!(P[A[i - mid - 1]] = C[i])) {
A.push_back(i);
}
}
send_packet(P);
while (i <= r) {
A.push_back(i ++);
}
} else {
send_packet(std::vector<bool>(31, true));
solve_alice(mid + 1, r, C);
for (i = l; i <= mid && i - l < A.size(); i ++) {
if (!(P[A[i - l]] = C[i])) {
A.push_back(i);
}
}
send_packet(P);
while (i <= mid) {
A.push_back(i ++);
}
}
}
void solve_bob(int l, int r, std::vector<std::vector<bool>> &R, int &cur) {
if (l == r) {
return A.push_back(l);
}
if (l + 1 == r) {
return A.push_back(l), A.push_back(l + 1);
}
int mid = (l + r) >> 1, cnt = 0, i;
for (bool x : R[cur]) {
cnt += x;
}
cur ++;
if (cnt << 1 < 31) {
solve_bob(l, mid, R, cur);
for (i = mid + 1; i <= r && i - mid <= A.size(); i ++) {
if (!R[cur][A[i - mid - 1]]) {
A.push_back(i);
}
}
while (i <= r) {
A.push_back(i ++);
}
} else {
solve_bob(mid + 1, r, R, cur);
for (i = l; i <= mid && i - l < A.size(); i ++) {
if (!R[cur][A[i - l]]) {
A.push_back(i);
}
}
while (i <= mid) {
A.push_back(i ++);
}
}
cur ++;
}
void send_message(std::vector<bool> M, std::vector<bool> C) {
A.clear();
solve_alice(0, 30, C);
for (int i = 0; i < 4; i ++) {
P[A[i]] = M.size() >> i & 1;
}
send_packet(P);
for (int i = 0; i < M.size(); i += 16) {
for (int j = i; j < i + 16 && j < M.size(); j ++) {
P[A[j - i]] = M[j];
}
send_packet(P);
}
}
std::vector<bool> receive_message(std::vector<std::vector<bool>> R) {
std::vector<bool> M;
int cur = 0;
A.clear();
solve_bob(0, 30, R, cur);
int res = 0;
for (int i = 0; i < 4; i ++) {
res |= R[cur][A[i]] << i;
}
if (!res) {
res = 16;
}
for (int i = cur + 1; i + 1 < R.size(); i ++) {
for (int j = 0; j < 16; j ++) {
M.push_back(R[i][A[j]]);
}
}
for (int i = 0; i < res; i ++) {
M.push_back(R.back()[A[i]]);
}
return M;
}
詳細信息
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 66ms
memory: 4080kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #2:
score: 10
Accepted
time: 32ms
memory: 3808kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #3:
score: 10
Accepted
time: 35ms
memory: 3748kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #4:
score: 10
Accepted
time: 21ms
memory: 3740kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #5:
score: 10
Accepted
time: 6ms
memory: 3624kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #6:
score: 10
Accepted
time: 10ms
memory: 3976kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #7:
score: 10
Accepted
time: 24ms
memory: 3804kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Subtask #2:
score: 62.847
Acceptable Answer
Test #8:
score: 62.847
Acceptable Answer
time: 152ms
memory: 4072kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.6983
result:
points 0.6983
Test #9:
score: 62.847
Acceptable Answer
time: 117ms
memory: 3800kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.6983
result:
points 0.6983
Test #10:
score: 62.847
Acceptable Answer
time: 127ms
memory: 3972kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.6983
result:
points 0.6983
Test #11:
score: 62.847
Acceptable Answer
time: 139ms
memory: 3800kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.6983
result:
points 0.6983
Test #12:
score: 66.159
Acceptable Answer
time: 156ms
memory: 3792kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.7351
result:
points 0.7351
Test #13:
score: 62.847
Acceptable Answer
time: 133ms
memory: 3804kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.6983
result:
points 0.6983
Test #14:
score: 62.847
Acceptable Answer
time: 106ms
memory: 3756kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.6983
result:
points 0.6983
Test #15:
score: 62.847
Acceptable Answer
time: 116ms
memory: 3724kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.6983
result:
points 0.6983
Test #16:
score: 62.847
Acceptable Answer
time: 143ms
memory: 4020kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.6983
result:
points 0.6983
Test #17:
score: 90
Accepted
time: 37ms
memory: 3984kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #18:
score: 90
Accepted
time: 68ms
memory: 4024kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #19:
score: 90
Accepted
time: 76ms
memory: 3716kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #20:
score: 90
Accepted
time: 100ms
memory: 3732kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #21:
score: 90
Accepted
time: 59ms
memory: 3820kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #22:
score: 90
Accepted
time: 116ms
memory: 3720kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #23:
score: 90
Accepted
time: 139ms
memory: 3816kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #24:
score: 90
Accepted
time: 168ms
memory: 3732kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #25:
score: 90
Accepted
time: 137ms
memory: 4016kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #26:
score: 66.159
Acceptable Answer
time: 191ms
memory: 3808kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.7351
result:
points 0.7351
Test #27:
score: 62.847
Acceptable Answer
time: 176ms
memory: 4084kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.6983
result:
points 0.6983