QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#594323#9237. MessageDecember45672.847 236ms4144kbC++173.1kb2024-09-27 21:27:062024-09-27 21:27:07

Judging History

你现在查看的是最新测评结果

  • [2024-09-27 21:27:07]
  • 评测
  • 测评结果:72.847
  • 用时:236ms
  • 内存:4144kb
  • [2024-09-27 21:27:06]
  • 提交

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: 33ms
memory: 3732kb

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: 17ms
memory: 3752kb

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: 37ms
memory: 3856kb

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: 39ms
memory: 4048kb

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: 35ms
memory: 3816kb

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: 28ms
memory: 4128kb

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: 11ms
memory: 3856kb

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: 137ms
memory: 4036kb

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: 104ms
memory: 3848kb

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: 201ms
memory: 3760kb

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: 163ms
memory: 3760kb

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: 173ms
memory: 4016kb

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: 118ms
memory: 4128kb

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: 117ms
memory: 4136kb

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: 113ms
memory: 4060kb

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: 155ms
memory: 3824kb

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: 53ms
memory: 3820kb

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: 47ms
memory: 3868kb

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: 69ms
memory: 4136kb

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: 54ms
memory: 3752kb

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: 98ms
memory: 4060kb

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: 120ms
memory: 3804kb

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: 124ms
memory: 3820kb

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: 159ms
memory: 4032kb

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: 168ms
memory: 4052kb

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: 236ms
memory: 4144kb

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: 166ms
memory: 3764kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.6983

result:

points 0.6983