QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#133157#2674. Vision programbashkort#0 0ms5128kbC++203.4kb2023-08-01 16:39:082024-07-04 01:07:06

Judging History

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

  • [2024-07-04 01:07:06]
  • 评测
  • 测评结果:0
  • 用时:0ms
  • 内存:5128kb
  • [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:39:08]
  • 提交

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 massert(bool f) {
    while (!f) {
        cout << endl;
    }
}

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

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

    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 && y >= 0) {
                mp1[sum].push_back(toi(x, y));
                pos1[x][y] = top++;
            }
        }
    }

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

    for (auto [x, y] : mp1) {
        st1[x].init(y);
    }
    for (auto [x, y] : mp2) {
        st2[x].init(y);
    }

    vector<int> orz;

    for (int i = 0; i < H; ++i) {
        for (int j = 0; j < W; ++j) {
            vector<int> a;
            int lx = 1e9, 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];
                    massert((sum == -1 || sum == x1 + y1) && p != -1);
                    sum = x1 + y1;
                    lx = min(lx, p);
                    rx = max(rx, p + 1);
                }
            }
            if (sum != -1) {
                st1[sum].rangeOr(lx, rx, a);
            }
            lx = 1e9, rx = -1, sum = -1e9;
            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];
                    massert((sum == -1 || sum == y1 - x1) && p != -1);
                    sum = y1 - x1;
                    lx = min(lx, p);
                    rx = max(rx, p + 1);
                }
            }
            if (sum != -1e9) {
                st2[sum].rangeOr(lx, rx, a);
            }
            if (!a.empty()) {
                orz.push_back(add_and({toi(i, j), add_or(a)}));
            }
        }
    }

    add_or(orz);
}


Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Time Limit Exceeded

Test #1:

score: 0
Time Limit Exceeded

input:

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

output:

Unauthorized output

result:


Subtask #2:

score: 0
Time Limit Exceeded

Test #19:

score: 0
Time Limit Exceeded

input:

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

output:

Unauthorized output

result:


Subtask #3:

score: 0
Skipped

Dependency #2:

0%

Subtask #4:

score: 0
Skipped

Dependency #3:

0%

Subtask #5:

score: 0
Time Limit Exceeded

Test #48:

score: 0
Time Limit Exceeded

input:

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

output:

Unauthorized output

result:


Subtask #6:

score: 0
Time Limit Exceeded

Test #70:

score: 0
Time Limit Exceeded

input:

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

output:

Unauthorized output

result:


Subtask #7:

score: 0
Wrong Answer

Test #101:

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

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%