UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#213512#2770. 子序列nodgd201220ms40072kbC++111.7kb2024-11-12 19:24:262024-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;
}

Details

小提示:点击横条可展开更详细的信息

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'