QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#846486#9995. 乒乓球赛yanshanjiahongAC ✓391ms5496kbC++142.3kb2025-01-07 09:06:132025-01-07 09:06:20

Judging History

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

  • [2025-01-07 09:06:20]
  • 评测
  • 测评结果:AC
  • 用时:391ms
  • 内存:5496kb
  • [2025-01-07 09:06:13]
  • 提交

answer

#include<bits/stdc++.h>
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define repp(i,j,k) for(int i=j;i>=k;i--)
#define pii pair<int,int>
#define mp make_pair
#define fir first
#define sec second
#define ls(x) (x<<1)
#define rs(x) ((x<<1)|1)
#define lowbit(i) (i&-i)
#define int long long
using namespace std;
typedef long long ll;
const int N=1e5+5,M=25,mo=998244353,inf=1e18+7;
const double PI=acos(-1);
void read(int &p){
    int x=0,w=1;
    char ch=getchar();
    while(!isdigit(ch)){
        if(ch=='-')w=-1;
        ch=getchar();
    }
    while(isdigit(ch)){
        x=(x<<3)+(x<<1)+ch-'0';
        ch=getchar();
    }
    p=x*w;
}
int T;
int n,f[M][M][M];
pii s[N];
bool check(int x,int y){
    return (x>=11||y>=11)&&abs(x-y)>=2;
}
void calc(int m){
    rep(i,0,m){
        rep(j,0,m){
            rep(k,0,m)
                f[i][j][k]=0;
        }
    }
    f[0][0][0]=1;
    rep(i,1,m){
        rep(j,0,m){
            rep(k,0,m){
                if(s[i].fir!=-1&&(s[i].fir!=j||s[i].sec!=k)&&(s[i].fir!=k||s[i].sec!=j))continue;
                if(j&&!check(j-1,k))f[i][j][k]+=f[i-1][j-1][k];
                if(k&&!check(j,k-1))f[i][j][k]+=f[i-1][j][k-1];
                f[i][j][k]%=mo;
            }
        }
    }
}
void solve(){
    read(n);
    rep(i,1,n)
        read(s[i].fir),read(s[i].sec);
    calc(min(n,22ll));
    if(n<=22){
        int ans=0;
        rep(i,0,n){
            rep(j,0,n)
                if(check(i,j))ans+=f[n][i][j],ans%=mo;
        }
        printf("%lld\n",ans);
        return;
    }
    if(n&1){
        puts("0");
        return;
    }
    int ans=f[22][11][11];
    rep(i,22,n){
        if(i&1){
            if(s[i].fir!=-1&&(abs(s[i].fir-s[i].sec)>1||s[i].fir+s[i].sec!=i)){
                puts("0");
                return;
            }
            ans*=2,ans%=mo;
        }
        else if(i==n){
            if(s[i].fir!=-1&&(abs(s[i].fir-s[i].sec)!=2||s[i].fir+s[i].sec!=i)){
                puts("0");
                return;
            }
        }
        else{
            if(s[i].fir!=-1&&(s[i].fir!=s[i].sec||2*s[i].fir!=i)){
                puts("0");
                return;
            }
        }
    }
    printf("%lld\n",ans);
}
signed main(){
    read(T);
    while(T--)
        solve();
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 3936kb

input:

7
11
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
11
-1 -1
1 1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
11
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
1 11
22
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-...

output:

2
0
0
0
369512
0
864

result:

ok 7 lines

Test #2:

score: 0
Accepted
time: 1ms
memory: 3932kb

input:

12
10
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
11
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
12
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
12
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
11 0
-1 -1
12
-1 -1
-1 -1
-...

output:

0
2
22
0
0
0
0
369512
0
0
0
0

result:

ok 12 lines

Test #3:

score: 0
Accepted
time: 222ms
memory: 3832kb

input:

20000
16
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
2
-1 -1
-1 -1
25
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
13
-1 -1
-1 -1
-1 -1
-1 -1
-...

output:

6006
0
0
132
0
0
2002
0
0
0
0
369512
184756
0
0
0
0
41756
572
0
2
2002
2
0
6006
0
0
38896
369512
87516
369512
0
6006
0
0
6006
0
369512
0
0
369512
572
184756
0
739024
87516
145860
2
0
16016
0
2002
6006
0
0
0
0
0
132
6006
572
2002
0
3520
0
0
0
0
22
0
2
184756
0
0
0
0
0
0
0
0
0
572
3432
572
132
3960
57...

result:

ok 20000 lines

Test #4:

score: 0
Accepted
time: 225ms
memory: 3988kb

input:

20000
25
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
6 14
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
2
-1 -1
-1 -1
9
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
3 4
-1 -1
-1 -1
5
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
15
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 ...

output:

0
0
0
0
2002
0
1350
87516
87516
0
132
132
0
0
38896
0
31680
0
572
132
0
184756
38896
42
38896
184756
572
6006
38896
369512
0
0
0
252
0
0
0
739024
87516
0
0
0
132
0
0
132
132
22
0
132
0
87516
0
0
0
739024
132
16016
0
0
0
0
0
22
0
22
0
0
0
2002
0
2002
0
369512
22
22
38896
38896
87516
0
0
0
0
0
0
2
252...

result:

ok 20000 lines

Test #5:

score: 0
Accepted
time: 223ms
memory: 3908kb

input:

20000
10
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
25
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
8 8
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
12
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
25
-1...

output:

0
0
22
0
43472
6006
0
132
0
0
180
16016
6006
0
0
0
0
0
0
0
0
38896
22
0
2
0
0
422
8008
0
0
0
739024
0
0
0
0
0
38896
132
572
0
0
0
0
210
132
0
0
369512
6006
2002
22
0
0
0
2002
184756
87516
0
0
0
132
0
2
22
0
0
0
6006
0
184756
0
4
0
0
0
132
0
22
1456
366080
0
14256
184756
6006
0
0
0
0
0
0
10010
0
0
0
...

result:

ok 20000 lines

Test #6:

score: 0
Accepted
time: 221ms
memory: 4052kb

input:

20000
21
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
6
-1 -1
-1 -1
-1 -1
-1 -1
0 5
-1 -1
2
-1 -1
-1 -1
10
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
7
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
9
-1 -1
...

output:

0
0
0
0
0
0
0
16016
40
22
0
0
0
0
87516
2002
0
2002
0
739024
0
739024
369512
0
87516
0
0
64
0
0
0
422
0
0
572
0
980
22
22
0
0
0
160
0
0
0
0
0
739024
0
0
0
22
6006
0
0
0
72
0
0
0
0
0
0
0
0
0
0
0
22
0
0
0
0
0
22
0
0
132
0
0
0
0
20
0
2970
0
0
0
0
0
0
0
0
0
2
0
0
45760
572
0
0
0
0
0
0
0
0
184756
0
0
0
8...

result:

ok 20000 lines

Test #7:

score: 0
Accepted
time: 221ms
memory: 3992kb

input:

20000
15
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
16
-1 -1
0 2
2 1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
2 9
9 3
-1 -1
-1 -1
-1 -1
-1 -1
15
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
18
-1 -1
-1 -1
-1...

output:

2002
54
2002
0
0
0
6336
0
10
0
0
0
0
0
0
0
0
0
184756
0
0
2
0
0
0
115200
0
0
42
0
60
2
0
0
0
0
64680
572
0
0
0
0
0
0
2002
38896
0
0
0
0
0
132
0
0
378
0
0
0
0
144
0
0
0
70
0
0
160
0
0
0
0
0
0
0
3300
0
0
22
0
0
0
54054
117600
0
132
0
0
0
0
0
870
0
0
0
572
0
0
0
0
0
0
1144
0
0
6006
110880
0
6006
0
0
0
...

result:

ok 20000 lines

Test #8:

score: 0
Accepted
time: 205ms
memory: 3928kb

input:

20000
23
0 1
2 0
-1 -1
4 0
-1 -1
-1 -1
3 4
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
7 12
-1 -1
-1 -1
-1 -1
-1 -1
18
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
3 8
-1 -1
8 5
-1 -1
-1 -1
-1 -1
12 5
-1 -1
12
-1 -1
-1 -1
-1 -1
-1 -1
4 1
-1 -1
-1 -1
2 6
-1 -1
10 ...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
56
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
12
0
0
0
0
0
0
0
0
0
0
0
21504
0
0
0
0
0
0
0
0
132
0
0
0
0
0
2
2160
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
13608
0
0
15120
0
0
0
0
0
0
0
0
2
0
0
0
0
0
30
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 20000 lines

Test #9:

score: 0
Accepted
time: 326ms
memory: 3988kb

input:

20000
18
-1 -1
-1 -1
2 1
-1 -1
-1 -1
-1 -1
4 3
4 4
4 5
-1 -1
-1 -1
-1 -1
4 9
9 5
9 6
6 10
7 10
-1 -1
24
1 0
-1 -1
1 2
1 3
2 3
-1 -1
-1 -1
-1 -1
5 4
6 4
7 4
-1 -1
7 6
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
10 10
11 10
11 11
12 11
13 11
18
-1 -1
1 1
1 2
-1 -1
3 2
3 3
3 4
-1 -1
-1 -1
-1 -1
-1 -1
5 7
6 7
7...

output:

120
8400
720
72
3840
480
16
168
180
320
896
180
420
48
48
112
3600
160
480
6
32
48
280
240
120
240
192
576
12
48
1440
384
160
18
192
480
32
176
1536
80
22680
360
2688
3888
60
3840
10
1600
5600
1728
216
384
256
210
176
5400
144
3360
108
0
4
72
48
768
6912
24
96
48
10368
30
2880
0
576
360
48
1440
480
...

result:

ok 20000 lines

Test #10:

score: 0
Accepted
time: 391ms
memory: 3928kb

input:

20000
20
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
15
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
10 3
-1 -1
11 4
18
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1...

output:

184756
572
38896
2002
22176
184756
7722
288
2002
880
672
38896
16016
6006
0
46200
41160
630
45760
0
369512
9900
739024
87516
5760
366080
6006
8008
257400
6006
52920
77220
14280
48620
8820
54054
184756
13552
31680
6006
6006
87516
672
232848
840
87516
8400
184756
27440
87516
38896
38896
31680
205920
3...

result:

ok 20000 lines

Test #11:

score: 0
Accepted
time: 162ms
memory: 3836kb

input:

10000
16
-1 -1
1 1
-1 -1
-1 -1
1 4
1 5
1 6
-1 -1
3 6
-1 -1
4 7
4 8
9 4
-1 -1
-1 -1
11 5
18
1 0
-1 -1
-1 -1
-1 -1
3 2
4 2
-1 -1
2 6
-1 -1
2 8
3 8
-1 -1
-1 -1
-1 -1
-1 -1
6 10
-1 -1
11 7
26
-1 -1
1 1
2 1
-1 -1
-1 -1
4 2
-1 -1
4 4
-1 -1
5 5
-1 -1
6 6
-1 -1
-1 -1
7 8
-1 -1
-1 -1
9 9
-1 -1
10 10
-1 -1
-1...

output:

16
200
18432
96
1152
768
108
25200
192
2400
5280
384
80
96
1200
192
368640
8
4320
240
144
108
180
462
1600
4320
576
12
32
96
5376
792
15552
128
72
2304
80
72
36
6
96
480
48
720
48
208
26880
6912
30
6
1536
192
16
24
60
132
60
3360
128
480
384
3072
6
144
192
2304
840
5940
2304
384
18
360
168
3240
1080...

result:

ok 10000 lines

Test #12:

score: 0
Accepted
time: 190ms
memory: 3832kb

input:

10000
18
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
18
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
5 2
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
22
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1...

output:

38896
12474
369512
38896
4200
55440
38896
220
2002
16016
184756
739024
369512
514800
16016
6006
739024
87516
1524
3120
291720
105840
5940
184756
87516
6006
184756
16016
16016
1478048
91520
2002
112
184756
4290
87516
2002
2520
10584
63504
8008
87516
38896
184756
128700
68640
19448
16016
8008
240240
1...

result:

ok 10000 lines

Test #13:

score: 0
Accepted
time: 27ms
memory: 3844kb

input:

500
995
0 1
-1 -1
2 1
2 2
-1 -1
3 3
3 4
-1 -1
4 5
-1 -1
-1 -1
-1 -1
-1 -1
5 9
6 9
-1 -1
10 7
8 10
9 10
-1 -1
-1 -1
-1 -1
12 11
-1 -1
-1 -1
13 13
-1 -1
-1 -1
-1 -1
15 15
15 16
16 16
17 16
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
20 19
-1 -1
-1 -1
21 21
22 21
22 22
-1 -1
23 23
24 23
-1 -1
-1 -1
25 25
25 26
26 26...

output:

0
0
885589515
295196505
646720429
0
0
456840382
0
0
194011298
0
477738172
713448436
955476344
0
0
182541667
0
856008466
772934677
0
0
238869086
0
590393010
196101077
885589515
0
0
0
182541667
0
0
884196329
559094632
0
0
885589515
646720429
590393010
0
869940326
0
856332609
0
306666136
0
322315325
15...

result:

ok 500 lines

Test #14:

score: 0
Accepted
time: 25ms
memory: 3940kb

input:

500
998
0 1
-1 -1
-1 -1
-1 -1
3 2
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1...

output:

636540367
0
79228700
313583759
483434828
0
275319451
0
0
483434828
313583759
636540367
0
624753596
774272553
0
483434828
241717414
713448436
0
483434828
111840979
103033451
636540367
0
0
0
0
0
0
966869656
274836381
0
0
0
627167518
0
966869656
515843553
825765125
241717414
0
141104531
0
56865085
8545...

result:

ok 500 lines

Test #15:

score: 0
Accepted
time: 18ms
memory: 5496kb

input:

5
99995
-1 -1
1 1
-1 -1
-1 -1
-1 -1
-1 -1
5 2
3 5
4 5
5 5
-1 -1
5 7
5 8
-1 -1
-1 -1
9 7
8 9
8 10
10 9
10 10
11 10
-1 -1
-1 -1
12 12
-1 -1
-1 -1
13 14
14 14
14 15
-1 -1
-1 -1
16 16
-1 -1
-1 -1
18 17
-1 -1
19 18
19 19
-1 -1
-1 -1
20 21
-1 -1
-1 -1
22 22
23 22
-1 -1
24 23
24 24
-1 -1
25 25
-1 -1
-1 -1
...

output:

0
0
0
801524002
0

result:

ok 5 lines

Test #16:

score: 0
Accepted
time: 12ms
memory: 5484kb

input:

5
99998
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
-1 -1
19 20
-1 -1
-1 -1
-1 -1
-1 -1
22 22
-1 -1
-1 -1
-1 -1
-1 -1
-1 -...

output:

679063850
0
337747770
461093795
0

result:

ok 5 lines