QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#525710#2674. Vision programarbuzick#0 3ms4928kbC++204.7kb2024-08-20 20:58:022024-08-20 20:58:02

Judging History

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

  • [2024-08-20 20:58:02]
  • 评测
  • 测评结果:0
  • 用时:3ms
  • 内存:4928kb
  • [2024-08-20 20:58:02]
  • 提交

answer

#include "vision.h"

#include <bits/stdc++.h>

using namespace std;

vector<int> get_short(vector<int> ns) {
    map<int, int> cnt;
    for (auto vl : ns) {
        cnt[vl]++;
    }
    vector<int> ns2;
    for (auto [vl, c] : cnt) {
        if (c % 2 == 1) {
            ns2.push_back(vl);
        }
    }
    if (ns2.empty()) {
        ns2.push_back(0);
        ns2.push_back(0);
    }
    return ns2;
}

vector<vector<int>> multiply(vector<int> a, vector<int> b, bool fl = false) {
    vector<vector<int>> res(a.size() + b.size() - 1);
    if (a.size() == 1) {
        for (int i = 0; i < (int)res.size(); ++i) {
            res[i].push_back(add_and({a[0], b[i]}));
        }
        return res;
    }
    vector<int> a1, a2, b1, b2;
    for (int i = 0; i < (int)a.size() / 2; ++i) {
        a1.push_back(a[i]);
    }
    for (int i = (int)a.size() / 2; i < (int)a.size(); ++i) {
        a2.push_back(a[i]);
    }
    for (int i = 0; i < (int)b.size() / 2; ++i) {
        b1.push_back(b[i]);
    }
    for (int i = (int)b.size() / 2; i < (int)b.size(); ++i) {
        b2.push_back(b[i]);
    }

    vector<int> a12(max(a1.size(), a2.size())), b12(max(b1.size(), b2.size()));
    for (int i = 0; i < (int)a12.size(); ++i) {
        if (i < (int)a1.size() && i < (int)a2.size()) {
            a12[i] = add_xor({a1[i], a2[i]});
        } else if (i < (int)a1.size()) {
            a12[i] = a1[i];
        } else {
            a12[i] = a2[i];
        }
    }
    for (int i = 0; i < (int)b12.size(); ++i) {
        if (i < (int)b1.size() && i < (int)b2.size()) {
            b12[i] = add_xor({b1[i], b2[i]});
        } else if (i < (int)b1.size()) {
            b12[i] = b1[i];
        } else {
            b12[i] = b2[i];
        }
    }

    vector<vector<int>> res1 = multiply(a1, b1), res2 = multiply(a12, b12), res3(a2.size() + b2.size() - 1);
    if (!fl) {
        res3 = multiply(a2, b2);
    }
    vector<vector<int>> temp(res.size());
    for (int i = 0; i < (int)res2.size(); ++i) {
        if (i < (int)res1.size() && i < (int)res2.size()) {
            for (auto vl : res1[i]) {
                temp[i + a1.size()].push_back(vl);
            }
            for (auto vl : res3[i]) {
                temp[i + a1.size()].push_back(vl);
            }
        } else if (i < (int)res1.size()) {
            for (auto vl : res1[i]) {
                temp[i + a1.size()].push_back(vl);
            }
        } else if (i < (int)res3.size()) {
            for (auto vl : res3[i]) {
                temp[i + a1.size()].push_back(vl);
            }
        }
    }
    for (int i = 0; i < (int)res1.size(); ++i) {
        for (auto vl : res1[i]) {
            temp[i].push_back(vl);
        }
    }
    for (int i = 0; i < (int)res2.size(); ++i) {
        for (auto vl : res2[i]) {
            temp[i + a1.size()].push_back(vl);
        }
    }
    for (int i = 0; i < (int)res3.size(); ++i) {
        for (auto vl : res3[i]) {
            temp[i + a1.size() + b1.size()].push_back(vl);
        }
    }

    return temp;
}

void construct_network(int h, int w, int k) {
    vector<int> hs(h), ws(w);
    for (int i = 0; i < h; ++i) {
        vector<int> ns;
        for (int j = 0; j < w; ++j) {
            ns.push_back(i * w + j);
        }
        hs[i] = add_or(ns);
    }
    for (int i = 0; i < w; ++i) {
        vector<int> ns;
        for (int j = 0; j < h; ++j) {
            ns.push_back(j * w + i);
        }
        ws[i] = add_or(ns);
    }
    vector<int> hd(h), wd(w);
    vector<int> a = hs, b = hs;
    reverse(b.begin(), b.end());
    vector<vector<int>> res = multiply(a, b, true);
    hd[0] = add_xor(hs);
    for (int i = 1; i < h; ++i) {
        res[h - 1 - i] = get_short(res[h - 1 - i]);
        // res[h - 1 + i] = get_short(res[h - 1 + i]);
        int t1 = add_xor(res[h - 1 - i]);
        // int t2 = add_xor(res[h - 1 + i]);
        // hd[i] = add_or({t1, t2});
        hd[i] = t1;
    }
    a = ws, b = ws;
    reverse(b.begin(), b.end());
    res = multiply(a, b, true);
    wd[0] = add_xor(ws);
    for (int i = 1; i < w; ++i) {
        res[w - 1 - i] = get_short(res[w - 1 - i]);
        // res[w - 1 + i] = get_short(res[w - 1 + i]);
        int t1 = add_xor(res[w - 1 - i]);
        // int t2 = add_xor(res[w - 1 + i]);
        // wd[i] = add_or({t1, t2});
        wd[i] = t1;
    }
    vector<int> temp;
    for (int i = 0; i < (int)hd.size() && i <= k; ++i) {
        if (k - i < (int)wd.size()) {
            if (w != 1 && h != 1) {
                temp.push_back(add_and({hd[i], wd[k - i]}));
            } else if (i == 0 || i == k) {
                temp.push_back(add_and({hd[i], wd[k - i]}));
            }
        }
    }
    add_or(temp);
}

详细

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 4004kb

input:

c2675211-ade0-44b0-8c15-741dd835f3d2
1 3 1
-1

output:

b17553fd-ba5a-4140-836c-491f938c515b
OK
19
1 3 0 1 2
1 1 0
1 1 1
1 1 2
0 2 3 3
2 1 3
2 2 4 5
2 2 6 5
0 2 4 6
2 2 9 6
2 2 10 4
0 2 9 10
0 2 12 13
0 2 6 4
2 3 4 5 6
2 2 11 14
2 1 11
0 2 8 18
1 1 20

result:

wrong answer on inputs (0, 0), (0, 1), expected 1, but computed 0

Subtask #2:

score: 0
Wrong Answer

Test #19:

score: 0
Wrong Answer
time: 0ms
memory: 4100kb

input:

c2675211-ade0-44b0-8c15-741dd835f3d2
1 9 3
-1

output:

b17553fd-ba5a-4140-836c-491f938c515b
OK
85
1 9 0 1 2 3 4 5 6 7 8
1 1 0
1 1 1
1 1 2
1 1 3
1 1 4
1 1 5
1 1 6
1 1 7
1 1 8
0 2 9 9
2 1 9
2 2 10 14
2 2 11 15
2 2 12 16
2 2 13 17
2 2 18 14
2 2 17 13
2 2 16 12
2 2 15 11
2 2 10 12
2 2 11 13
2 2 18 16
2 2 17 15
2 2 10 11
2 2 18 17
0 2 10 18
0 2 33 34
0 2 11 ...

result:

wrong answer on inputs (0, 3), (0, 4), expected 0, but computed 1

Subtask #3:

score: 0
Skipped

Dependency #2:

0%

Subtask #4:

score: 0
Skipped

Dependency #3:

0%

Subtask #5:

score: 0
Wrong Answer

Test #48:

score: 0
Wrong Answer
time: 3ms
memory: 4680kb

input:

c2675211-ade0-44b0-8c15-741dd835f3d2
1 199 1
-1

output:

b17553fd-ba5a-4140-836c-491f938c515b
WA
Too many instructions

result:

wrong answer WA in grader: Too many instructions

Subtask #6:

score: 0
Wrong Answer

Test #70:

score: 8
Accepted
time: 0ms
memory: 3800kb

input:

c2675211-ade0-44b0-8c15-741dd835f3d2
2 2 1
3 128
128 129
128 130
128 131

output:

b17553fd-ba5a-4140-836c-491f938c515b
OK
19
1 2 0 1
1 2 2 3
1 2 0 2
1 2 1 3
2 2 4 5
2 2 5 4
0 2 4 5
0 2 8 9
2 2 4 5
2 1 10
2 2 6 7
2 2 7 6
0 2 6 7
0 2 14 15
2 2 6 7
2 1 16
0 2 12 19
0 2 13 18
1 2 20 21

result:

ok 

Test #71:

score: 8
Accepted
time: 0ms
memory: 3816kb

input:

c2675211-ade0-44b0-8c15-741dd835f3d2
2 2 2
3 129
129 128
129 131
129 130

output:

b17553fd-ba5a-4140-836c-491f938c515b
OK
18
1 2 0 1
1 2 2 3
1 2 0 2
1 2 1 3
2 2 4 5
2 2 5 4
0 2 4 5
0 2 8 9
2 2 4 5
2 1 10
2 2 6 7
2 2 7 6
0 2 6 7
0 2 14 15
2 2 6 7
2 1 16
0 2 13 19
1 1 20

result:

ok 

Test #72:

score: 8
Accepted
time: 3ms
memory: 4336kb

input:

c2675211-ade0-44b0-8c15-741dd835f3d2
101 29 1
8 254
254 255
254 227
254 252
254 196
254 224
254 2958
254 2986
254 226

output:

b17553fd-ba5a-4140-836c-491f938c515b
OK
4007
1 29 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
1 29 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
1 29 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 8...

result:

ok 

Test #73:

score: 0
Wrong Answer
time: 3ms
memory: 4308kb

input:

c2675211-ade0-44b0-8c15-741dd835f3d2
101 29 31
92 284
284 330
284 634
284 598
284 114
284 366
284 966
284 814
284 922
284 510
284 474
284 194
284 930
284 42
284 230
284 1002
284 438
284 526
284 778
284 186
284 6
284 958
284 150
284 562
284 886
284 78
284 402
284 850
284 482
284 222
284 367
284 671
2...

output:

b17553fd-ba5a-4140-836c-491f938c515b
OK
4034
1 29 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
1 29 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
1 29 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 8...

result:

wrong answer on inputs (0, 0), (17, 14), expected 1, but computed 0

Subtask #7:

score: 0
Wrong Answer

Test #101:

score: 0
Wrong Answer
time: 0ms
memory: 4928kb

input:

c2675211-ade0-44b0-8c15-741dd835f3d2
200 200 1
100 524
24804 34853
20956 34628
18830 29184
28919 32573
11364 24911
2226 5624
3715 30838
2206 17143
21162 27531
20198 27242
5007 12724
27160 32586
3535 7307
17015 25466
626 13891
9132 26194
9198 33073
815 7328
6938 21395
9489 30995
10804 21530
14698 394...

output:

b17553fd-ba5a-4140-836c-491f938c515b
WA
Too many instructions

result:

wrong answer WA in grader: Too many instructions

Subtask #8:

score: 0
Skipped

Dependency #1:

0%