QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#291148#2472. Counting HaybalesMoRanSky100 ✓47ms38296kbC++232.3kb2023-12-26 05:05:372023-12-26 05:05:38

Judging History

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

  • [2023-12-26 05:05:38]
  • 评测
  • 测评结果:100
  • 用时:47ms
  • 内存:38296kb
  • [2023-12-26 05:05:37]
  • 提交

answer

// Skyqwq
#include <bits/stdc++.h>

#define pb push_back
#define fi first
#define se second
#define mp make_pair

using namespace std;

typedef pair<int, int> PII;
typedef long long LL;

template <typename T> bool chkMax(T &x, T y) { return (y > x) ? x = y, 1 : 0; }
template <typename T> bool chkMin(T &x, T y) { return (y < x) ? x = y, 1 : 0; }

template <typename T> void inline read(T &x) {
    int f = 1; x = 0; char s = getchar();
    while (s < '0' || s > '9') { if (s == '-') f = -1; s = getchar(); }
    while (s <= '9' && s >= '0') x = x * 10 + (s ^ 48), s = getchar();
    x *= f;
}

const int N = 5005, P = 1e9 + 7;

int n, a[N], b[2][N], t[2], L[N], R[N], pos[N], f[N][N];
 
void inline clr() {
    for (int i = 0; i <= t[0]; i++) {
        for (int j = 0; j <= t[1]; j++) {
            f[i][j] = 0;
        }
    }
    t[0] = t[1] = 0;
}


void inline add(int &x, int y) {
    x += y;
    if (x >= P) x -= P;
}

int main() {
    int T; read(T);
    while (T--) {
        read(n);
        for (int i = 1; i <= n; i++) read(a[i]);
        for (int i = 1; i <= n; i++) {
            int v = a[i] & 1;
            b[v][++t[v]] = i;
            pos[i] = t[v];
        }
        
        for (int i = 1; i <= n; i++) {
            int v = a[i] & 1;
            L[i] = 0, R[i] = n + 1;
            for (int j = 1; j <= t[!v]; j++) {
                if (b[!v][j] < i && abs(a[b[!v][j]] - a[i]) != 1)
                    L[i] = pos[b[!v][j]];
            }
            for (int j = 1; j <= t[!v]; j++) {
                if (b[!v][j] > i && abs(a[b[!v][j]] - a[i]) != 1) {
                    R[i] = pos[b[!v][j]];
                    break;
                }
            }
        }

        f[0][0] = 1;
        for (int i = 0; i <= t[0]; i++) {
            for (int j = 0; j <= t[1]; j++) {
                if (i < t[0]) {
                    int now = b[0][i + 1];
                    if (j < R[now] && j >= L[now]) add(f[i + 1][j], f[i][j]);
                }   
                if (j < t[1]) {
                    int now = b[1][j + 1];
                    if (i < R[now] && i >= L[now]) add(f[i][j + 1], f[i][j]);
                }
            }
        }
        printf("%d\n", f[t[0]][t[1]]);
        clr();
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 4.7619
Accepted
time: 1ms
memory: 3632kb

input:

7
4
2 2 2 3
4
3 3 1 2
4
5 3 4 2
6
3 3 1 1 2 2
6
1 3 3 4 1 2
6
4 1 2 3 5 4
10
1 5 6 6 6 4 2 3 2 5

output:

4
4
5
15
9
8
19

result:

ok 7 lines

Test #2:

score: 4.7619
Accepted
time: 0ms
memory: 3684kb

input:

10
10
447773962 773442532 122816 137572579 324627123 157577940 253498609 99147813 425825313 199995380
10
416515986 416515986 416515987 416515987 416515988 416515988 416515989 416515989 416515988 416515989
10
563229302 563229301 563229301 563229302 563229301 563229300 563229300 563229301 563229302 56...

output:

1
186
210
133
150
133
175
231
155
154

result:

ok 10 lines

Test #3:

score: 4.7619
Accepted
time: 0ms
memory: 3556kb

input:

10
10
468145963 198730372 27838076 590195590 467423861 520495379 451366491 344173378 354694313 165814381
10
219739800 219739801 219739801 219739800 219739799 219739799 219739798 219739798 219739798 219739799
10
568161994 568161995 568161994 568161994 568161994 568161994 568161993 568161994 568161995...

output:

1
186
120
120
51
231
252
115
252
231

result:

ok 10 lines

Test #4:

score: 4.7619
Accepted
time: 39ms
memory: 32492kb

input:

1
5000
2 1 3 3 1 1 2 2 3 2 3 1 1 1 1 1 1 1 2 3 1 1 2 2 2 1 1 2 3 2 2 3 1 3 2 3 1 2 2 2 1 1 3 2 2 1 1 2 2 3 3 3 1 1 1 3 2 3 3 1 3 1 3 1 3 3 3 2 2 2 1 2 2 3 2 3 2 1 1 1 2 2 2 3 1 2 1 1 2 2 3 2 2 3 1 3 1 2 2 1 1 3 1 1 2 3 1 3 2 2 2 2 3 2 3 2 3 3 3 1 2 3 3 2 2 2 2 3 1 2 2 1 1 1 1 3 3 1 1 1 3 2 2 1 3 2 2...

output:

493836655

result:

ok single line: '493836655'

Test #5:

score: 4.7619
Accepted
time: 3ms
memory: 5200kb

input:

10
500
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 1...

output:

523068127
490281121
335146668
378222245
662250428
677229935
432072782
2379013
65560564
320300148

result:

ok 10 lines

Test #6:

score: 4.7619
Accepted
time: 0ms
memory: 4956kb

input:

10
500
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101...

output:

523068127
580931200
279753758
9368367
561595432
690890919
369268447
846226737
285457745
261543809

result:

ok 10 lines

Test #7:

score: 4.7619
Accepted
time: 24ms
memory: 38208kb

input:

1
5000
2 3 2 3 6 5 6 8 8 11 11 11 13 14 15 16 17 18 19 21 21 23 24 24 25 25 27 27 29 31 32 33 34 34 35 37 38 39 40 40 40 43 44 43 46 46 48 48 50 50 51 52 52 53 56 55 57 57 58 61 62 62 64 64 64 67 68 69 69 71 72 73 74 75 75 77 76 77 79 81 82 82 84 84 85 87 88 88 89 91 91 93 94 93 94 97 97 97 100 101 ...

output:

290956746

result:

ok single line: '290956746'

Test #8:

score: 4.7619
Accepted
time: 1ms
memory: 4108kb

input:

10
100
1 1 4 2 2 4 3 2 4 2 3 2 3 1 1 2 2 1 2 3 3 4 4 2 2 2 1 3 2 3 4 3 1 2 2 4 4 2 1 4 3 2 4 4 1 1 3 4 4 4 1 2 3 2 4 2 3 1 2 1 1 2 2 3 2 4 2 2 2 2 4 2 4 4 2 1 3 1 2 1 2 3 2 2 3 2 2 4 2 2 3 2 2 4 4 4 1 2 3 2
100
2 3 2 3 3 3 3 2 2 2 1 3 1 2 3 4 3 3 3 3 4 2 3 4 1 1 2 3 3 3 1 4 4 1 4 2 4 3 2 3 4 4 1 3 2...

output:

762655378
567764360
228518291
538721530
87546958
974544188
16895117
983492342
273849796
708122840

result:

ok 10 lines

Test #9:

score: 4.7619
Accepted
time: 0ms
memory: 4160kb

input:

10
100
4 1 4 1 4 2 3 4 1 2 1 3 2 4 2 2 3 4 2 4 3 1 3 3 4 2 3 4 3 1 2 2 2 2 4 4 2 1 1 2 1 2 4 3 1 2 2 1 1 2 1 3 2 4 4 3 2 3 4 1 1 2 2 2 2 3 4 3 4 2 2 1 2 1 2 3 4 1 3 2 1 3 3 1 4 3 1 1 2 4 4 1 4 3 3 2 1 1 2 2
100
1 2 3 2 1 4 1 4 3 3 1 2 3 3 4 3 4 2 2 3 3 2 3 3 3 3 2 2 1 1 1 1 2 2 2 4 1 4 3 1 3 3 3 4 2...

output:

46441250
54311602
250886215
794423726
648710286
557560030
81113960
925275253
859511541
923517702

result:

ok 10 lines

Test #10:

score: 4.7619
Accepted
time: 1ms
memory: 3844kb

input:

10
100
1 2 3 2 2 1 1 2 1 1 1 4 2 1 1 1 1 2 2 2 1 2 4 2 4 3 1 4 3 3 3 1 4 1 3 4 3 3 3 4 2 3 3 3 4 3 2 4 4 2 4 4 4 1 1 1 3 1 4 2 3 1 4 4 4 4 1 3 1 3 4 4 4 1 4 3 2 1 2 1 3 2 2 3 2 1 2 4 4 4 1 4 3 2 3 2 4 2 1 4
100
3 1 3 1 2 2 1 2 1 3 1 1 4 1 1 1 1 1 2 3 2 4 3 2 4 1 2 4 4 2 1 1 2 4 1 4 2 1 2 1 2 3 2 2 1...

output:

621199694
33992159
596987282
686898161
413935763
385374226
400768792
8955878
825420054
312467980

result:

ok 10 lines

Test #11:

score: 4.7619
Accepted
time: 1ms
memory: 3896kb

input:

10
100
8 3 1 5 7 5 8 9 5 6 3 1 2 8 8 3 2 3 1 2 7 7 10 9 1 4 6 9 9 2 7 1 8 9 3 8 10 6 8 2 6 5 2 8 4 6 7 2 5 9 5 2 7 3 6 1 7 1 7 8 9 1 6 7 10 4 4 6 1 4 4 5 2 1 9 9 1 5 7 2 6 8 9 2 2 8 9 9 4 4 8 6 3 9 9 10 4 5 2 9
100
4 3 1 2 9 9 2 7 4 6 10 5 10 4 5 6 9 2 3 2 6 4 10 7 6 4 6 1 1 6 4 2 1 1 4 3 4 7 8 3 1 ...

output:

2488320
629856000
258048
20321280
183500786
64512
335923200
3175200
13996800
906992640

result:

ok 10 lines

Test #12:

score: 4.7619
Accepted
time: 1ms
memory: 3900kb

input:

10
100
193563111 193563110 193563109 193563108 193563109 193563108 193563109 193563109 193563110 193563111 193563110 193563110 193563109 193563111 193563110 193563109 193563108 193563110 193563109 193563107 193563108 193563110 193563110 193563110 193563109 193563110 193563108 193563107 193563106 193...

output:

725199468
872897576
382289091
242465517
742404204
320509008
320509008
338635045
538992043
742404204

result:

ok 10 lines

Test #13:

score: 4.7619
Accepted
time: 1ms
memory: 4100kb

input:

10
100
165531093 165531092 165531090 165531090 165531088 165531089 165531089 165531090 165531091 165531090 165531090 165531091 165531089 165531089 165531089 165531087 165531088 165531088 165531086 165531086 165531085 165531084 165531084 165531083 165531084 165531083 165531084 165531084 165531085 165...

output:

977126526
360509330
504170368
74201732
273521609
382289091
120934403
137205613
742404204
137205613

result:

ok 10 lines

Test #14:

score: 4.7619
Accepted
time: 4ms
memory: 7008kb

input:

5
1000
835051605 835051606 835051607 835051608 835051609 835051609 835051608 835051608 835051609 835051610 835051609 835051609 835051609 835051610 835051610 835051609 835051609 835051608 835051607 835051607 835051606 835051606 835051606 835051606 835051605 835051606 835051606 835051606 835051604 835...

output:

93384863
568698435
969293251
826421027
573539193

result:

ok 5 lines

Test #15:

score: 4.7619
Accepted
time: 8ms
memory: 7124kb

input:

5
1000
551842461 551842460 551842459 551842459 551842457 551842457 551842459 551842458 551842456 551842455 551842456 551842458 551842459 551842457 551842457 551842458 551842456 551842456 551842455 551842454 551842452 551842451 551842453 551842451 551842453 551842453 551842453 551842454 551842453 551...

output:

167959558
386342361
519316672
524108839
744133081

result:

ok 5 lines

Test #16:

score: 4.7619
Accepted
time: 4ms
memory: 6828kb

input:

5
1000
911411059 911411057 911411057 911411055 911411055 911411053 911411054 911411055 911411056 911411055 911411055 911411055 911411054 911411055 911411056 911411058 911411058 911411058 911411057 911411058 911411059 911411059 911411060 911411060 911411060 911411059 911411059 911411059 911411060 911...

output:

749921974
933593379
262392129
475137418
229257102

result:

ok 5 lines

Test #17:

score: 4.7619
Accepted
time: 7ms
memory: 7008kb

input:

5
1000
239756971 239756970 239756971 239756970 239756969 239756970 239756969 239756970 239756969 239756968 239756969 239756968 239756969 239756969 239756968 239756967 239756966 239756966 239756967 239756966 239756966 239756966 239756966 239756966 239756967 239756965 239756966 239756967 239756967 239...

output:

205752624
180116804
708871014
425431808
621863530

result:

ok 5 lines

Test #18:

score: 4.7619
Accepted
time: 19ms
memory: 38296kb

input:

1
5000
316394141 316394140 316394140 316394141 316394141 316394141 316394141 316394140 316394140 316394141 316394140 316394141 316394141 316394140 316394141 316394141 316394141 316394140 316394140 316394139 316394140 316394139 316394139 316394139 316394139 316394140 316394140 316394140 316394139 316...

output:

651398981

result:

ok single line: '651398981'

Test #19:

score: 4.7619
Accepted
time: 18ms
memory: 38220kb

input:

1
5000
698334028 698334028 698334027 698334028 698334028 698334028 698334028 698334027 698334027 698334028 698334028 698334028 698334027 698334027 698334027 698334028 698334028 698334027 698334028 698334028 698334027 698334028 698334028 698334027 698334028 698334027 698334028 698334027 698334028 698...

output:

192833632

result:

ok single line: '192833632'

Test #20:

score: 4.7619
Accepted
time: 19ms
memory: 37940kb

input:

1
5000
104725913 104725912 104725912 104725912 104725912 104725913 104725913 104725913 104725913 104725912 104725913 104725913 104725912 104725912 104725912 104725912 104725913 104725912 104725913 104725912 104725913 104725913 104725913 104725913 104725913 104725912 104725913 104725912 104725913 104...

output:

433813305

result:

ok single line: '433813305'

Test #21:

score: 4.7619
Accepted
time: 47ms
memory: 38228kb

input:

1
5000
631500634 631500634 631500634 631500633 631500634 631500633 631500634 631500634 631500633 631500633 631500634 631500634 631500634 631500634 631500633 631500633 631500635 631500634 631500634 631500634 631500635 631500635 631500634 631500634 631500634 631500634 631500635 631500634 631500634 631...

output:

218954931

result:

ok single line: '218954931'