QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#133131#2674. Vision programbashkort#0 1ms5120kbC++203.6kb2023-08-01 16:12:342024-07-04 01:06:42

Judging History

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

  • [2024-07-04 01:06:42]
  • 评测
  • 测评结果:0
  • 用时:1ms
  • 内存:5120kb
  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-08-01 16:12:34]
  • 提交

answer

#include "vision.h"
#include <bits/stdc++.h>

using namespace std;

struct SegmentTree {
    vector<int> t;
    int sz = 1;

    void init(const vector<int> &a) {
        sz = size(a);
        t.resize(sz * 4);
        build(1, 0, sz, a);
    }

    void build(int x, int lx, int rx, const vector<int> &a) {
        if (lx + 1 == rx) {
            t[x] = a[lx];
        } else {
            build(x << 1, lx, lx + rx >> 1, a);
            build(x << 1 | 1, lx + rx >> 1, rx, a);
            t[x] = add_or({t[x << 1], t[x << 1 | 1]});
        }
    }

    void rangeSum(int l, int r, vector<int> &a, int x, int lx, int rx) {
        if (l >= rx || lx >= r) {
            return;
        }
        if (l <= lx && rx <= r) {
            return a.push_back(t[x]);
        }
        int mid = lx + rx >> 1;
        rangeSum(l, r, a, x << 1, lx, mid);
        rangeSum(l, r, a, x << 1 | 1, mid, rx);
    }

    void rangeOr(int l, int r, vector<int> &a) {
        rangeSum(l, r, a, 1, 0, sz);
    }
};

void construct_network(int H, int W, int K) {
    vector pos1(H, vector<int>(W)), pos2(pos1);
    map<int, vector<int>> mp1, mp2;
    map<int, SegmentTree> st1, st2;

    auto toi = [&](int x, int y) {
        return x * W + y;
    };


    cout << "here!" << endl;

    for (int sum = 0; sum < H + W; ++sum) {
        int top = 0;
        for (int x = 0; x <= sum; ++x) {
            int y = sum - x;
            if (y < W && x < H) {
                mp1[sum].push_back(toi(x, y));
                pos1[x][y] = top++;
            }
        }
    }

    cout << "here!" << endl;

    for (int sum = -H + 1; sum < W; ++sum) {
        int top = 0;
        for (int y = 0; y < W; ++y) {
            int x = y - sum;
            if (x >= 0 && x < H && y < W) {
                mp2[sum].push_back(toi(x, y));
                pos2[x][y] = top++;
            }
        }
    }

//    cout << "here!" << endl;

    for (auto [x, y] : mp1) {
//        cout << "st1: " << x << endl;
        st1[x].init(y);
    }
    for (auto [x, y] : mp2) {
//        cout << "st2: " << x << endl;
        st2[x].init(y);
    }


//    cout << "here!" << endl;

    vector<int> orz;

    for (int i = 0; i < H; ++i) {
        for (int j = 0; j < W; ++j) {
            vector<int> a;
            int lx = -1, rx = -1, sum = -1;
            for (int x1 = 0; x1 <= i; ++x1) {
                int y1 = j - (K - (i - x1));
                if (y1 <= j && y1 >= 0 && y1 < W) {
                    int p = pos1[x1][y1];
                    assert(sum == -1 || sum == x1 + y1);
                    sum = x1 + y1;
                    lx = lx == -1 ? p : lx;
                    rx = p + 1;
                }
            }
//            cout << "300iq" << endl;
            if (sum != -1) {
                st1[sum].rangeOr(lx, rx, a);
            }
            lx = -1, rx = -1, sum = -1;
            for (int x1 = 0; x1 <= i; ++x1) {
                int y1 = j + (K - (i - x1));
                if (y1 >= j && y1 >= 0 && y1 < W) {
                    int p = pos2[x1][y1];
                    assert(sum == -1 || sum == y1 - x1);
                    sum = y1 - x1;
                    lx = lx == -1 ? p : lx;
                    rx = p + 1;
                }
            }
            if (sum != -1) {
//                cout << "query2: " << sum << endl;
                st2[sum].rangeOr(lx, rx, a);
            }
            if (!a.empty()) {
                orz.push_back(add_and({toi(i, j), add_or(a)}));
            }
        }
    }

    add_or(orz);
}

詳細信息

Subtask #1:

score: 0
Wrong Answer

Test #1:

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

input:

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

output:

Unauthorized output

result:

wrong answer secret mismatch

Subtask #2:

score: 0
Wrong Answer

Test #19:

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

input:

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

output:

Unauthorized output

result:

wrong answer secret mismatch

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: 1ms
memory: 3984kb

input:

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

output:

Unauthorized output

result:

wrong answer secret mismatch

Subtask #6:

score: 0
Wrong Answer

Test #70:

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

input:

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

output:

Unauthorized output

result:

wrong answer secret mismatch

Subtask #7:

score: 0
Wrong Answer

Test #101:

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

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:

Unauthorized output

result:

wrong answer secret mismatch

Subtask #8:

score: 0
Skipped

Dependency #1:

0%