QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#695914 | #9237. Message | MrPython | 76.159 | 235ms | 4116kb | C++20 | 2.9kb | 2024-10-31 21:02:59 | 2024-10-31 21:03:08 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
vector<bool> safeWrite(vector<bool> const& a, vector<bool> const& c) {
vector<bool> res(31);
size_t p = 0;
for (size_t i = 0; i < 31; ++i) res[i] = (!c[i] ? a[p++] : 0);
return res;
}
vector<bool> safeRead(vector<bool> const& a, vector<bool> const& c) {
vector<bool> res;
for (size_t i = 0; i < 31; ++i)
if (!c[i]) res.emplace_back(a[i]);
return res;
}
vector<bool> send_packet(vector<bool> A);
void send_message(vector<bool> a, vector<bool> c) {
vector<size_t> poses;
for (size_t i = 0; i < 31; ++i)
if (!c[i]) poses.emplace_back(i);
for (size_t i = 0; i < 4; ++i)
send_packet(vector<bool>(31, (poses[0] >> i) & 1));
for (size_t i = 0; i < 4; ++i) {
vector<bool> dat(16);
for (size_t j = 1; j < 16; ++j)
dat[j - 1] = ((poses[j] - poses[j - 1] - 1) >> i) & 1;
dat[15] = ((a.size() % 16) >> i) & 1;
send_packet(safeWrite(dat, c));
}
vector<bool>::iterator it = a.begin(), jt = it + 16;
for (; jt < a.end(); it += 16, jt += 16)
send_packet(safeWrite(vector<bool>(it, jt), c));
{
vector<bool> lst(it, a.end());
lst.resize(16);
send_packet(safeWrite(lst, c));
}
}
std::vector<bool> receive_message(std::vector<std::vector<bool>> r) {
reverse(r.begin(), r.end());
size_t rev = 0;
vector<size_t> poses(16);
for (size_t j = 0; j < 4; ++j) {
poses[0] |= unsigned(count(r.back().begin(), r.back().end(), true) >= 16)
<< j;
r.pop_back();
}
for (size_t i = 1; i < 16; ++i) {
for (size_t j = 0; j < 4; ++j)
poses[i] |= unsigned(r.rbegin()[j][poses[i - 1]]) << j;
poses[i] += poses[i - 1] + 1;
}
for (size_t j = 0; j < 4; ++j) rev |= unsigned(r.rbegin()[j][poses[15]]) << j;
if (rev == 0) rev = 16;
r.erase(r.end() - 4, r.end());
vector<bool> c(31, true);
for (size_t i : poses) c[i] = false;
vector<bool> ans;
while (r.size() > 1) {
vector<bool> h = safeRead(r.back(), c);
ans.insert(ans.end(), h.begin(), h.end());
r.pop_back();
}
{
vector<bool> h = safeRead(r.back(), c);
ans.insert(ans.end(), h.begin(), h.begin() + rev);
}
return ans;
}
#ifndef ONLINE_JUDGE
vector<vector<bool>> packets;
vector<bool> d(31);
mt19937 rd((random_device())());
uniform_int_distribution<unsigned short int> rdb(0, 1);
vector<bool> send_packet(vector<bool> A) {
assert(A.size() == 31);
for (size_t i = 0; i < 31; ++i)
if (d[i]) A[i] = rdb(rd);
packets.emplace_back(A);
return A;
}
int main(void) {
size_t n;
cin >> n;
vector<bool> dat(n);
for (auto i : dat) {
char c;
cin >> c;
i = c == '1';
}
for (auto i : d) {
char c;
cin >> c;
i = c == '1';
}
send_message(dat, d);
vector<bool> res = receive_message(packets);
assert(res == dat);
cerr << packets.size();
}
#endif
詳細信息
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 36ms
memory: 3760kb
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: 33ms
memory: 3812kb
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: 18ms
memory: 4008kb
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: 40ms
memory: 4116kb
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: 20ms
memory: 3848kb
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: 21ms
memory: 3812kb
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: 20ms
memory: 3756kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Subtask #2:
score: 66.159
Acceptable Answer
Test #8:
score: 66.159
Acceptable Answer
time: 204ms
memory: 4016kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.7351
result:
points 0.7351
Test #9:
score: 66.159
Acceptable Answer
time: 106ms
memory: 4044kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.7351
result:
points 0.7351
Test #10:
score: 66.159
Acceptable Answer
time: 210ms
memory: 4044kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.7351
result:
points 0.7351
Test #11:
score: 66.159
Acceptable Answer
time: 235ms
memory: 3728kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.7351
result:
points 0.7351
Test #12:
score: 69.642
Acceptable Answer
time: 186ms
memory: 4012kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.7738
result:
points 0.7738
Test #13:
score: 66.159
Acceptable Answer
time: 134ms
memory: 3816kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.7351
result:
points 0.7351
Test #14:
score: 66.159
Acceptable Answer
time: 99ms
memory: 4048kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.7351
result:
points 0.7351
Test #15:
score: 66.159
Acceptable Answer
time: 133ms
memory: 3820kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.7351
result:
points 0.7351
Test #16:
score: 66.159
Acceptable Answer
time: 148ms
memory: 4016kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.7351
result:
points 0.7351
Test #17:
score: 90
Accepted
time: 19ms
memory: 4004kb
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: 38ms
memory: 3756kb
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: 55ms
memory: 3736kb
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: 95ms
memory: 3844kb
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: 83ms
memory: 3716kb
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: 148ms
memory: 3856kb
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: 104ms
memory: 3812kb
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: 106ms
memory: 3844kb
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: 155ms
memory: 3768kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
1
result:
points 1.0
Test #26:
score: 69.642
Acceptable Answer
time: 192ms
memory: 3804kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.7738
result:
points 0.7738
Test #27:
score: 66.159
Acceptable Answer
time: 205ms
memory: 4052kb
Manager to Aisha
Aisha to Manager
Manager to Basma
Basma to Manager
Manager to Checker
0.7351
result:
points 0.7351