QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#553185 | #9240. Mosaic | dalao_see_me# | 5 | 136ms | 27460kb | C++14 | 4.1kb | 2024-09-08 10:18:21 | 2024-09-08 10:18:24 |
Judging History
answer
#include "mosaic.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 2e5 + 5;
typedef pair <int, int> pii;
int n, q;
int a[N], b[N], col[N];
struct Node {
int l, r, id, w;
} ;
vector <Node> t[N];
vector <pii> S;
struct Mat {
int n, m;
LL a[3][3];
Mat operator + (const Mat &B) {
Mat res; res.n = n; res.m = m;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
res.a[i][j] = a[i][j] + B.a[i][j];
return res;
}
Mat operator * (const Mat &B) {
Mat res; res.n = n; res.m = B.m;
memset(res.a, 0, sizeof(res.a));
for (int i = 0; i < n; i++)
for (int k = 0; k < m; k++)
for (int j = 0; j < B.m; j++)
res.a[i][j] += a[i][k] * B.a[k][j];
return res;
}
} clr, rev, upd;
struct Seg {
#define lx x << 1
#define rx x << 1 | 1
Mat t[N << 2], tag[N << 2];
void upd(int x, const Mat &w) {
t[x] = t[x] * w;
tag[x] = tag[x] * w;
}
void pushup(int x) {
t[x] = t[lx] + t[rx];
}
void pushdown(int x) {
upd(lx, tag[x]);
upd(rx, tag[x]);
tag[x] = clr;
}
void build(int x, int L, int R) {
tag[x] = clr;
if (L == R) {
t[x].a[0][0] = t[x].a[0][1] = a[L]; t[x].a[0][2] = 1;
t[x].n = 1; t[x].m = 3; return;
}
int mid = L + R >> 1;
build(lx, L, mid);
build(rx, mid + 1, R);
pushup(x);
}
void modify(int x, int pos, int w, int L, int R) {
if (L == R) return void(t[x].a[0][1] = w);
pushdown(x);
int mid = L + R >> 1;
if (pos <= mid) modify(lx, pos, w, L, mid);
else modify(rx, pos, w, mid + 1, R);
pushup(x);
}
void change(int x, int l, int r, const Mat &w, int L, int R) {
if (l <= L && R <= r) return upd(x, w);
pushdown(x);
int mid = L + R >> 1;
if (l <= mid) change(lx, l, r, w, L, mid);
if (r > mid) change(rx, l, r, w, mid + 1, R);
pushup(x);
}
LL query(int x, int l, int r, int L, int R) {
if (l <= L && R <= r) return t[x].a[0][0];
pushdown(x);
int mid = L + R >> 1; LL res = 0;
if (l <= mid) res += query(lx, l, r, L, mid);
if (r > mid) res += query(rx, l, r, mid + 1, R);
return res;
}
} seg;
vector <LL> mosaic(vector <int> X, vector <int> Y, vector <int> T, vector <int> B, vector <int> L, vector <int> R) {
n = X.size(); q = T.size(); vector <LL> Ans(q);
for (int i = 0; i < n; i++) a[i + 1] = X[i], b[i + 1] = Y[i];
for (int i = 0; i < q; i++) {
Node w; w.l = L[i] + 1; w.r = R[i] + 1; w.id = i;
if (T[i]) {
w.w = -1;
t[T[i]].push_back(w);
}
w.w = 1; t[B[i] + 1].push_back(w);
}
for (int i = 2; i <= n; i++) S.push_back(make_pair(i, i)), col[i] = a[i];
memset(clr.a, 0, sizeof(clr.a));
clr.n = clr.m = 3; clr.a[0][0] = clr.a[1][1] = clr.a[2][2] = 1;
rev = clr; rev.a[1][1] = -1; rev.a[2][1] = 1; upd = clr; upd.a[1][0] = 1;
seg.build(1, 1, n);
for (auto p : t[1]) Ans[p.id] += p.w * seg.query(1, p.l, p.r, 1, n);
for (int i = 2; i <= n; i++) {
int c = b[i], lst = 0; seg.modify(1, 1, c, 1, n);
vector <pii> tmp;
for (auto p : S) {
if (col[p.first]) {
seg.change(1, p.first, p.second, rev, 1, n);
col[p.first] = 0;
if (c == col[p.first] && lst) {
tmp.push_back(make_pair(lst, p.first - 1));
lst = p.first;
}
if (!lst) lst = p.first;
c = col[p.first] ^ ((p.second - p.first) & 1);
}
else {
if (!c) {
seg.change(1, p.first, p.second, rev, 1, n);
col[p.first] = 1;
if (c == col[p.first] && lst) {
tmp.push_back(make_pair(lst, p.first - 1));
lst = p.first;
}
if (!lst) lst = p.first;
c = col[p.first] ^ ((p.second - p.first) & 1);
}
else {
if (p.first < p.second) seg.change(1, p.first + 1, p.second, rev, 1, n), col[p.first + 1] = 0;
if (!lst) tmp.push_back(make_pair(p.first, p.first));
else tmp.push_back(make_pair(lst, p.first));
if (p.first == p.second) c = lst = 0;
else c = (p.second - p.first + 1) & 1, lst = p.first + 1;
}
}
}
if (lst < n) tmp.push_back(make_pair(lst, n)); swap(S, tmp);
seg.change(1, 1, n, upd, 1, n);
for (auto p : t[i]) Ans[p.id] += p.w * seg.query(1, p.l, p.r, 1, n);
}
return Ans;
}
详细
Subtask #1:
score: 5
Accepted
Test #1:
score: 5
Accepted
time: 2ms
memory: 14132kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 1 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 0 0 0 0 0 0 0 0 0 0
result:
ok
Test #2:
score: 5
Accepted
time: 0ms
memory: 14060kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 1 1 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 1 1 1 1 1 1 1 1 1 1
result:
ok
Test #3:
score: 5
Accepted
time: 2ms
memory: 14068kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 2 1 0 1 0 10 1 1 0 1 1 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0 1
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 1 1 1 2 2 0 2 1 1 1
result:
ok
Test #4:
score: 5
Accepted
time: 0ms
memory: 14064kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 2 1 0 1 0 10 0 1 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1 1 1 1 0 0 0 1 0 1 0 0 1 1 0 0
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 1 2 1 1 2 1 1 1 1 0
result:
ok
Test #5:
score: 5
Accepted
time: 0ms
memory: 12036kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 2 0 1 0 0 10 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 0 1 0 0 0 0 1 1 1 1
result:
ok
Test #6:
score: 5
Accepted
time: 1ms
memory: 12036kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 2 1 1 1 0 10 0 0 0 1 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 0 0 1 1 1 1 1 0 1 0 0 1 1 0 1 0 0 0 1 0 0
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 2 2 0 2 1 1 0 1 1 1
result:
ok
Test #7:
score: 5
Accepted
time: 1ms
memory: 12024kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 2 0 0 0 1 10 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 1
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 0 1 1 1 0 0 0 1 1 1
result:
ok
Test #8:
score: 5
Accepted
time: 0ms
memory: 12056kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 2 1 0 1 1 10 0 1 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 0 1 0 1 0 1
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 2 1 1 0 1 0 2 0 1 2
result:
ok
Test #9:
score: 5
Accepted
time: 1ms
memory: 12064kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 2 0 1 0 1 10 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 1
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 2 2 0 2 1 2 1 0 1 2
result:
ok
Test #10:
score: 5
Accepted
time: 1ms
memory: 12320kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 2 1 1 1 1 10 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1 1
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 2 2 2 3 1 3 3 1 3 0
result:
ok
Subtask #2:
score: 0
Wrong Answer
Dependency #1:
100%
Accepted
Test #11:
score: 7
Accepted
time: 7ms
memory: 14392kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 199 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 1...
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 1078 5062 897 428 10378 1260 1733 4327 697 1864 34 430 709 5682 5295 625 39 10 196 416 3048 87 4065 49 1368 1220 80 1440 1083 5053 5561 2680 56 2539 1107 57 3705 1996 327 2789 432 1542 571 1643 756 5253 1931 1934 245 3545 2026 4364 935 1506 1992 1815 75 9847 1279 ...
result:
ok
Test #12:
score: 7
Accepted
time: 7ms
memory: 12156kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 200 1 1 1 1 1 0 1 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0 1 1 0 1 1 1 0 0 1 1...
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 3769 339 45 1631 13942 12533 2707 3153 945 4842 2223 5488 1671 2091 557 4839 3455 3211 2621 5391 7299 2789 757 2455 2546 713 9014 2772 1901 3239 1974 2740 6109 1088 5177 958 240 296 2539 517 1889 1345 1467 4590 1944 7950 2623 7550 3121 3184 2851 1237 1233 4601 356...
result:
ok
Test #13:
score: 0
Wrong Answer
time: 2ms
memory: 12076kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 200 0 0 1 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1...
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 417 1686 58 4282 141 6846 1379 662 2308 11178 426 3949 9260 5252 939 5173 5375 8528 1316 6105 331 11951 162 12032 6721 3469 9462 2016 1291 4436 1401 5269 103 4463 6019 14378 1110 9143 7250 3521 2280 2775 6085 753 70 1603 6387 7526 9797 10486 1886 5298 2609 3448 26...
result:
wrong answer 3rd lines differ - on the 1st token, expected: '399', found: '417'
Subtask #3:
score: 0
Time Limit Exceeded
Test #18:
score: 0
Time Limit Exceeded
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 199999 0 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 1 0 1 1 0 1 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 ...
output:
result:
Subtask #4:
score: 0
Skipped
Dependency #2:
0%
Subtask #5:
score: 0
Wrong Answer
Test #31:
score: 0
Wrong Answer
time: 136ms
memory: 27460kb
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200000 1 7 0 4 3 4 3 4 3 6 2 5 4 5 6 7 5 7 2 8 0 6 4 7 0 5 6 7 1 3 9 9 6 9 1 7 2 9 4 6 4 4 6 7 0 1 8 8 7 7 0 3 0 4 1 7 2 2 0 9 3 9 4 6 3 9 0 9 1 8 4 6 4 5 5 7 0 6 2 3 2 3 0 6 1 9 8 8 2 4 3 4 3 6 2 9 3 9 2 7 1 3 0 3 0 8 2 4 3...
output:
Wm5rkGNobnYjFI7TIY17RAm6FAQ2LlO9 OK 14 2 8 2 10 12 5 2 14 12 1 0 2 14 5 10 31 12 3 6 6 4 3 16 21 5 12 6 7 11 12 3 7 3 6 15 5 4 6 8 15 24 2 5 11 8 16 4 4 12 5 9 22 1 2 5 6 4 1 4 4 3 6 4 18 32 10 2 7 7 5 12 11 8 4 5 10 6 3 16 8 13 8 3 3 8 21 1 2 3 6 14 21 14 9 2 4 2 4 16 20 7 3 5 3 15 16 8 37 7 6 7 9 ...
result:
wrong answer 17th lines differ - on the 1st token, expected: '4', found: '5'
Subtask #6:
score: 0
Time Limit Exceeded
Test #42:
score: 0
Time Limit Exceeded
input:
njJ9Z7VxxKGR6SUcJMgdzy3qMz4JZ1Tq 199999 0 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1 1 1 0 0 1 1 1 1 0 1 0 0 0 0 0 1 1 1 0 1 1 0 1 1 0 0 1 1 0 0 0 0 1 0 1 ...
output:
result:
Subtask #7:
score: 0
Skipped
Dependency #3:
0%
Subtask #8:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%