ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#213512 | #2770. 子序列 | nodgd | 20 | 1220ms | 40072kb | C++11 | 1.7kb | 2024-11-12 19:24:26 | 2024-11-12 23:09:55 |
answer
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 200000 + 5;
const int P = 998244353;
int N, M, Q;
int a[MAX_N];
struct Query {
int l, r, ans;
} q[MAX_N];
int fl[MAX_N][22], fr[MAX_N][22];
void solve(int l, int r, vector<int> &qi) {
if (l == r || qi.empty()) return;
int m = l + r >> 1;
for (int j = 0; j < M; j ++) fl[m + 1][j] = 0;
for (int j = 0; j < M; j ++) fr[m][j] = 0;
fl[m + 1][0] = fr[m][0] = 1;
for (int i = m; i >= l; i --) {
for (int j = 0, jj = a[i]; j < M; j ++, jj ++, jj = jj < M ? jj : 0) {
fl[i][jj] = fl[i + 1][jj] + fl[i + 1][j];
}
}
for (int i = m + 1; i <= r; i ++) {
for (int j = 0, jj = a[i]; j < M; j ++, jj ++, jj = jj < M ? jj : 0) {
fr[i][jj] = fr[i - 1][jj] + fr[i - 1][j];
}
}
vector<int> ql, qr;
for (int i: qi) {
if (q[i].r < m) {
ql.push_back(i);
} else if (q[i].l > m + 1) {
qr.push_back(i);
} else {
int *f1 = fl[q[i].l], *f2 = fr[q[i].r], &ans = q[i].ans;
for (int j = 0; j < M; j ++) {
ans = (ans + 1ll * f1[j] * f2[j ? M - j : 0]) % P;
}
}
}
solve(l, m, ql);
solve(m + 1, r, qr);
}
int main() {
scanf("%d%d", &N, &M);
for (int i = 1; i <= N; i ++) {
scanf("%d", &a[i]);
}
scanf("%d", &Q);
vector<int> qi;
for (int i = 1; i <= Q; i ++) {
scanf("%d%d", &q[i].l, &q[i].r);
qi.push_back(i);
}
solve(1, N, qi);
for (int i = 1; i <= Q; i ++) {
printf("%d\n", q[i].ans);
}
return 0;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 4
Accepted
time: 0ms
memory: 1256kb
input:
10 20 7 5 5 1 7 13 19 10 2 7 10 10 10 6 7 6 8 4 10 8 9 5 8 6 10 5 5 2 6 6 8
output:
1 1 1 9 1 2 2 1 2 1
result:
ok 10 lines
Test #2:
score: 4
Accepted
time: 0ms
memory: 1260kb
input:
10 20 15 0 15 10 6 18 1 13 3 1 10 1 2 4 9 3 7 4 8 6 10 2 3 1 4 2 5 2 9 5 9
output:
2 4 2 2 2 2 4 2 12 3
result:
ok 10 lines
Test #3:
score: 4
Accepted
time: 0ms
memory: 1260kb
input:
10 20 8 9 17 13 10 13 16 11 19 3 10 6 9 3 9 2 6 1 10 5 10 6 10 4 5 2 4 10 10 3 5
output:
2 9 3 56 4 2 1 1 1 2
result:
ok 10 lines
Test #4:
score: 4
Accepted
time: 0ms
memory: 1264kb
input:
10 20 12 8 11 1 0 3 2 3 19 17 10 5 7 1 3 1 10 2 6 4 10 5 9 5 9 3 10 4 8 4 8
output:
2 2 52 4 14 2 2 16 2 2
result:
ok 10 lines
Test #5:
score: 4
Accepted
time: 0ms
memory: 1260kb
input:
10 20 7 0 2 2 8 12 10 7 1 2 10 9 9 6 9 3 7 3 8 1 6 2 4 6 8 4 5 1 6 8 9
output:
1 2 4 4 4 2 1 1 4 1
result:
ok 10 lines
Test #6:
score: 0
Wrong Answer
time: 0ms
memory: 1288kb
input:
100 20 3 15 11 17 7 9 16 11 6 0 1 1 19 15 18 0 14 12 17 9 19 12 18 9 4 14 11 5 18 10 4 18 14 8 14 8 ...
output:
2 3 52430 2 -144284050 1677704 293257108 499955182 107374112 624109372 383906423 104768 1639 7197424...
result:
wrong answer 5th lines differ - expected: '6597996', found: '-144284050'
Test #7:
score: 0
Wrong Answer
time: 0ms
memory: 1288kb
input:
100 20 3 7 17 4 9 6 6 15 18 1 3 5 19 13 2 7 9 10 4 5 0 10 18 18 6 0 1 15 16 12 2 7 6 0 17 2 14 18 4 ...
output:
3355488 198 -52804448 -691075388 342359198 6710976 7 106 8 1677728 6 -386134647 1 -688912700 -382202...
result:
wrong answer 3rd lines differ - expected: '146407370', found: '-52804448'
Test #8:
score: 0
Wrong Answer
time: 0ms
memory: 1284kb
input:
100 20 1 11 5 10 8 2 11 14 2 11 7 4 13 4 2 1 13 4 0 13 4 8 3 12 12 17 12 13 16 2 5 12 13 0 5 11 0 7 ...
output:
26391984 10 766939130 692672828 -73201637 409 5 214748032 1677728 -211145088 -383492093 848 2 329925...
result:
wrong answer 3rd lines differ - expected: '102265781', found: '766939130'
Test #9:
score: 0
Wrong Answer
time: 0ms
memory: 1288kb
input:
100 20 8 18 4 8 11 9 1 19 7 14 7 13 4 3 14 0 10 3 13 16 2 5 17 18 7 10 7 3 19 1 16 18 7 13 19 13 2 1...
output:
804 29 26228 214748368 26 406 144284306 107374200 3276 214748736 441240685 102 209724 3355344 419461...
result:
wrong answer 11th lines differ - expected: '13196104', found: '441240685'
Test #10:
score: 0
Wrong Answer
time: 0ms
memory: 1284kb
input:
100 20 17 1 13 11 0 8 12 2 4 15 14 18 6 6 5 16 18 4 6 19 4 0 4 6 10 19 5 4 18 17 14 16 3 0 1 6 2 4 0...
output:
334642334 107374192 766721907 52 3355432 882475258 396 72141769 1 312054174 156027151 8 294158228 44...
result:
wrong answer 1st lines differ - expected: '107223667', found: '334642334'
Test #11:
score: 0
Wrong Answer
time: 0ms
memory: 1456kb
input:
1000 20 7 14 19 15 16 8 19 15 5 5 6 3 4 16 0 1 7 6 14 3 12 2 4 5 16 12 12 8 1 9 6 13 4 10 12 16 11 7...
output:
0 0 0 341310629 -386658935 0 0 0 288567892 0 0 0 1642 29 0 0 441240813 -52794976 0 -6601068 204 0 0 ...
result:
wrong answer 1st lines differ - expected: '339309012', found: '0'
Test #12:
score: 0
Wrong Answer
time: 0ms
memory: 1452kb
input:
1000 20 16 7 12 15 13 10 8 1 14 16 13 6 16 7 4 11 0 17 6 3 4 8 17 10 3 11 18 13 17 19 15 4 7 17 12 4...
output:
12 852997632 0 0 0 0 52381 0 -201185622 -19921241 0 0 766717939 0 690830335 729808787 690744319 -798...
result:
wrong answer 2nd lines differ - expected: '484141516', found: '852997632'
Test #13:
score: 0
Wrong Answer
time: 2ms
memory: 1452kb
input:
1000 20 7 7 16 0 12 6 11 3 7 16 12 11 1 7 17 0 11 8 14 17 8 17 7 18 1 11 14 0 6 5 10 0 12 15 1 4 5 1...
output:
0 766990330 -349642836 -535193573 -519741234 0 -581351687 305528651 70252763 0 0 0 0 594017864 52722...
result:
wrong answer 1st lines differ - expected: '425631668', found: '0'
Test #14:
score: 0
Wrong Answer
time: 2ms
memory: 1452kb
input:
1000 20 19 3 14 11 9 17 18 4 11 5 0 18 2 11 13 12 8 10 15 19 12 9 2 15 5 19 14 17 17 7 18 5 2 8 5 0 ...
output:
601357296 379581047 0 0 274345510 0 0 -347724958 0 -288587556 0 0 73285605 -270409276 0 0 0 31205558...
result:
wrong answer 1st lines differ - expected: '778881096', found: '601357296'
Test #15:
score: 0
Wrong Answer
time: 0ms
memory: 1452kb
input:
1000 20 16 19 4 2 2 19 19 5 11 4 16 7 17 6 11 11 7 10 6 3 15 1 11 12 5 11 12 13 3 10 12 2 19 9 4 8 6...
output:
0 -825228241 0 0 -568324827 0 0 0 495068863 581957958 0 593495728 0 0 0 26391984 808450371 0 0 42949...
result:
wrong answer 1st lines differ - expected: '137484337', found: '0'
Test #16:
score: 0
Wrong Answer
time: 13ms
memory: 3240kb
input:
10000 20 12 8 12 19 9 19 1 10 19 11 12 10 19 5 0 16 17 1 9 18 18 13 6 0 14 16 6 6 3 6 17 2 13 19 13 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -312064286 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69100...
result:
wrong answer 1st lines differ - expected: '874193350', found: '0'
Test #17:
score: 0
Wrong Answer
time: 10ms
memory: 3236kb
input:
10000 20 8 15 6 17 5 13 11 1 7 9 16 16 15 12 4 19 18 2 3 10 13 15 12 5 3 6 15 2 0 11 8 19 13 18 12 1...
output:
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 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 1st lines differ - expected: '11498054', found: '0'
Test #18:
score: 0
Wrong Answer
time: 7ms
memory: 3232kb
input:
10000 20 0 9 6 6 17 19 11 13 18 14 0 10 3 0 0 11 12 11 2 19 18 12 13 16 8 7 14 12 10 2 7 3 4 18 10 1...
output:
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 102 0 0 0 417346525 0 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 1st lines differ - expected: '963045808', found: '0'
Test #19:
score: 0
Wrong Answer
time: 11ms
memory: 3228kb
input:
10000 20 5 13 8 2 2 13 16 17 9 8 15 10 1 12 2 18 19 1 0 17 9 7 16 14 0 9 19 14 13 3 19 17 5 3 19 17 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 536074227 0 0 0 0 0 0 0 0 -49726955 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 1st lines differ - expected: '875247851', found: '0'
Test #20:
score: 0
Wrong Answer
time: 10ms
memory: 3240kb
input:
10000 20 5 8 19 15 4 8 12 14 4 5 16 13 17 9 3 3 15 4 15 19 17 8 14 16 16 13 19 18 19 7 13 5 11 11 12...
output:
48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -455605406 0 0 0 0 0 0 0 0 0 0 -132117103 0 0 0 0 0 0 0 0 0...
result:
wrong answer 2nd lines differ - expected: '749885568', found: '0'
Test #21:
score: 0
Wrong Answer
time: 248ms
memory: 40068kb
input:
200000 20 11 5 3 3 2 9 10 10 15 4 19 1 3 0 19 19 15 0 0 12 14 16 1 8 3 18 10 6 14 11 2 7 17 2 0 1 12...
output:
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 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 1st lines differ - expected: '57545307', found: '0'
Test #22:
score: 0
Wrong Answer
time: 236ms
memory: 40072kb
input:
200000 20 13 15 5 3 2 0 3 4 6 16 14 0 4 11 8 10 18 5 3 12 1 7 2 16 13 19 16 16 3 16 6 8 2 6 10 0 13 ...
output:
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 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 1st lines differ - expected: '110393808', found: '0'
Test #23:
score: 0
Wrong Answer
time: 236ms
memory: 40068kb
input:
200000 20 15 8 8 12 19 10 4 14 16 6 3 17 13 4 14 17 5 15 19 4 0 3 17 5 4 9 14 19 10 11 9 13 0 3 18 0...
output:
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 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 1st lines differ - expected: '218640057', found: '0'
Test #24:
score: 0
Wrong Answer
time: 236ms
memory: 40068kb
input:
200000 20 11 4 7 18 16 15 15 18 11 2 4 1 17 18 6 9 19 12 2 14 8 6 10 4 15 16 17 13 18 1 15 18 15 9 1...
output:
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 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 1st lines differ - expected: '438860874', found: '0'
Test #25:
score: 0
Wrong Answer
time: 209ms
memory: 40072kb
input:
200000 20 5 3 18 11 17 13 14 19 0 0 1 3 4 13 8 1 15 7 15 2 12 8 3 15 8 1 4 8 7 5 9 16 9 16 0 14 2 16...
output:
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 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 1st lines differ - expected: '739309565', found: '0'