QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#594136#9237. MessageDecember45666.718 240ms4132kbC++174.1kb2024-09-27 19:36:482024-09-27 19:36:49

Judging History

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

  • [2024-09-27 19:36:49]
  • 评测
  • 测评结果:66.718
  • 用时:240ms
  • 内存:4132kb
  • [2024-09-27 19:36:48]
  • 提交

answer

#include "message.h"

void send_message(std::vector<bool> M, std::vector<bool> C) {
    std::vector<int> A;
    std::vector<bool> P(31);

    int cnt1 = 0, cnt2 = 0;

    for (int i = 0; i < 30; cnt1 ++) {
        if (!A.size()) {
            if (!C[i]) {
                A.push_back(i);
            }
            i ++;
            continue;
        }
        for (int j = 0; i < 30 && j < A.size(); i ++, j ++) {
            if (!(P[A[j]] = C[i])) {
                A.push_back(i);
            }
        }
    }
    A.clear();

    for (int i = 29; i >= 0; cnt2 ++) {
        if (!A.size()) {
            if (!C[i]) {
                A.push_back(i);
            }
            i --;
            continue;
        }
        for (int j = 0; i >= 0 && j < A.size(); i --, j ++) {
            if (!(P[A[j]] = C[i])) {
                A.push_back(i);
            }
        }
    }
    A.clear();

    if (cnt1 < cnt2) {
        send_packet(std::vector<bool>(31, 0));
        for (int i = 0; i < 30;) {
            if (!A.size()) {
                if (!C[i]) {
                    A.push_back(i);
                }
                send_packet(std::vector<bool>(31, C[i ++]));
                continue;
            }
            for (int j = 0; i < 30 && j < A.size(); i ++, j ++) {
                if (!(P[A[j]] = C[i])) {
                    A.push_back(i);
                }
            }
            send_packet(P);
        }
    } else {
        send_packet(std::vector<bool>(31, 1));
        for (int i = 29; i >= 0;) {
            if (!A.size()) {
                if (!C[i]) {
                    A.push_back(i);
                }
                send_packet(std::vector<bool>(31, C[i --]));
                continue;
            }
            for (int j = 0; i >= 0 && j < A.size(); i --, j ++) {
                if (!(P[A[j]] = C[i])) {
                    A.push_back(i);
                }
            }
            send_packet(P);
        }
    }

    if (!C[30]) {
        A.push_back(30);
    }

    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, C;
    std::vector<int> A;

    int cur = 1, cnt = 0;
    for (int x : R[0]) {
        cnt += x;
    }

    if (cnt << 1 < 31) {
        for (int i = 0; i < 30; cur ++) {
            if (!A.size()) {
                cnt = 0;
                for (int x : R[cur]) {
                    cnt += x;
                }
                if (cnt << 1 < 31) {
                    A.push_back(i);
                }
                i ++;
                continue;
            }

            for (int j = 0; i < 30 && j < A.size(); i ++, j ++) {
                if (!R[cur][A[j]]) {
                    A.push_back(i);
                }
            }
        }
    } else {
        for (int i = 29; i >= 0; cur ++) {
            if (!A.size()) {
                cnt = 0;
                for (int x : R[cur]) {
                    cnt += x;
                }
                if (cnt << 1 < 31) {
                    A.push_back(i);
                }
                i --;
                continue;
            }

            for (int j = 0; i >= 0 && j < A.size(); i --, j ++) {
                if (!R[cur][A[j]]) {
                    A.push_back(i);
                }
            }
        }
    }

    if (A.size() < 16) {
        A.push_back(30);
    }

    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: 32ms
memory: 4132kb

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

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: 59ms
memory: 4044kb

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: 51ms
memory: 3784kb

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

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

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: 19ms
memory: 3808kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Subtask #2:

score: 56.718
Acceptable Answer

Test #8:

score: 59.706
Acceptable Answer
time: 240ms
memory: 4080kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.6634

result:

points 0.6634

Test #9:

score: 69.642
Acceptable Answer
time: 156ms
memory: 3868kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.7738

result:

points 0.7738

Test #10:

score: 56.718
Acceptable Answer
time: 162ms
memory: 3888kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.6302

result:

points 0.6302

Test #11:

score: 59.706
Acceptable Answer
time: 201ms
memory: 3804kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.6634

result:

points 0.6634

Test #12:

score: 62.847
Acceptable Answer
time: 196ms
memory: 4068kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.6983

result:

points 0.6983

Test #13:

score: 62.847
Acceptable Answer
time: 149ms
memory: 4064kb

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: 149ms
memory: 4064kb

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

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

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: 32ms
memory: 3772kb

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: 64ms
memory: 3796kb

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: 78ms
memory: 4064kb

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: 96ms
memory: 3840kb

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: 106ms
memory: 4068kb

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: 83ms
memory: 3844kb

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

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

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

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: 167ms
memory: 4084kb

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: 161ms
memory: 4084kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0.6983

result:

points 0.6983