QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#44121#1841. Little LCSxiaoyaowudiAC ✓156ms60332kbC++141.7kb2022-08-13 08:32:012022-08-13 08:32:04

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-08-13 08:32:04]
  • 评测
  • 测评结果:AC
  • 用时:156ms
  • 内存:60332kb
  • [2022-08-13 08:32:01]
  • 提交

answer

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
constexpr int N=2000010,p=998244353;
char s[2][N];int n,T;
int cap[2][N][3];
int redu(int k){return k>=p?k-p:k;}
int c1(int p1,int p2,int p3){
	/*
	BABABABAB
	CACACACAC
	A:p1
	B:p2
	C:p3
	*/
	bool uc=true,dc=true;int un=1,dn=1;
	for(int i=1;i<=(n<<1)+1;i+=2)
		if(!cap[0][i][p2] || !cap[1][i][p3]) return 0;
	for(int i=2;i<=(n<<1);i+=2){
		if(!cap[0][i][p1]) uc=false;if(!cap[1][i][p1]) dc=false;
		un=redu(un*(cap[0][i][p1]+cap[0][i][p3]));
		dn=redu(dn*(cap[1][i][p1]+cap[1][i][p2]));
	}
	int ans=0;
	if(uc) ans=redu(ans+dn);
	if(dc) ans=redu(ans+un);
	if(uc && dc) ans=redu(ans+p-1);
	return ans;
}
int c2(int p1,int p2,int p3){
	static int suf[2][N];
	/*
	BABABAC
	CACACAB
	A:p1
	B:p2
	C:p3
	*/
	suf[0][n+1]=suf[1][n+1]=1;
	for(int i=n;i>=0;--i)
		suf[0][i]=suf[0][i+1]&cap[0][i<<1|1][p3],suf[1][i]=suf[1][i+1]&cap[1][i<<1|1][p2];
	int ans=0;
	for(int i=2;i<=(n<<1);i+=2)
		if(!cap[0][i][p1] || !cap[1][i][p1]) return 0;
	for(int i=0;i<n;++i){
		if(!cap[0][i<<1|1][p2] || !cap[1][i<<1|1][p3]) return ans;
		ans+=(suf[0][i+1]&suf[1][i+1]);
	}
	return ans;
}
int main(){
	scanf("%d",&T);
	while(T--){
		scanf("%d%s%s",&n,s[0]+1,s[1]+1);
		for(int i=1;i<=(n<<1)+1;++i){
			for(int j=0;j<3;++j){
				if(s[0][i]=='?' || s[0][i]-'A'==j) cap[0][i][j]=1;
				else cap[0][i][j]=0;
				if(s[1][i]=='?' || s[1][i]-'A'==j) cap[1][i][j]=1;
				else cap[1][i][j]=0;
			}
		}
		int ans=0;
		for(int i=0;i<3;++i)
			for(int j=0;j<3;++j) if(j!=i)
				for(int k=0;k<3;++k) if(k!=j && k!=i)
					ans=redu(ans+c1(i,j,k)),ans=redu(ans+c2(i,j,k));
		printf("%d\n",ans);
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

5
1
ABA
CBC
1
A?A
C?C
1
???
???
2
AA???
????B
3
?A?B?A?
???????

output:

1
3
24
0
2

result:

ok 5 number(s): "1 3 24 0 2"

Test #2:

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

input:

10
1
CC?
A?A
3
??B?B??
??C???B
1
BCB
ACA
5
??B?????BB?
A???B?????A
1
?C?
CB?
1
C?B
B?C
3
A???B?C
BA??B??
2
???BA
CBBBC
2
?C???
????B
1
B?C
C?B

output:

0
1
1
0
1
1
0
0
7
1

result:

ok 10 numbers

Test #3:

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

input:

5
1
???
A?B
4
????????B
?????????
1
C?B
B?C
4
B?B???C?C
C?C?B?B?B
10
??B????C??BC??????B??
A?A????C?C??????A?A?A

output:

1
70
1
1
511

result:

ok 5 number(s): "1 70 1 1 511"

Test #4:

score: 0
Accepted
time: 0ms
memory: 1760kb

input:

100
5
??B?BABC?CB
???C??ACA??
1
BA?
?C?
6
?A???????????
?????????????
8
????B?????C???C??
C???C????????????
3
??AC?C?
BA??B?B
5
?CACA??????
BC??BCB?BCB
5
??AC???CAC?
BC?C?CB??AB
8
????A????????????
???????????????B?
6
??B?B???B?B?B
B???C?C???C?C
32
??C???????????????????????C?C???????B?B????????????...

output:

4
1
266
3
4
11
2
391
1
4
1
65539
1
266
2
1
36
782
629145735
8
16384
65536
108
1
1
0
2048
13
18
6192
20971523
0
10241
9216
2
1
0
3
70
0
2
6
1
6
5
1
1
32781
1
4
1024
0
1
0
50331672
1
0
1027
1
8212
0
1
4
16
1
0
12583026
512
4106
0
1
32792
1152
0
12342
201326602
1
1048610
786443
266
1
2
0
16384
0
0
0
15...

result:

ok 100 numbers

Test #5:

score: 0
Accepted
time: 30ms
memory: 1984kb

input:

1000
576
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????A?????????????????????????????????A?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

697649915
0
300086987
477882952
0
114837367
0
292157273
258
217
370
0
173222299
257
780974428
0
5
249
4
258960905
408
153
956628202
529810565
650072045
408776692
270436362
362752852
199108759
23
851482705
0
0
854296371
0
0
48
673698582
222
698830636
390341652
431029707
963075578
553
241
100
36336660...

result:

ok 1000 numbers

Test #6:

score: 0
Accepted
time: 46ms
memory: 5080kb

input:

100
5181
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

180181102
541527759
360185221
367410095
943643196
770952889
877765722
1214
93914839
347286849
351
343061076
0
73
233880836
283174368
0
586626918
161075876
870
184340566
221
0
769
630411173
941340817
0
268116841
689
653101548
480352288
575976317
128864632
719747106
618745576
727
0
15
1509
972370109
8...

result:

ok 100 numbers

Test #7:

score: 0
Accepted
time: 44ms
memory: 29848kb

input:

10
1423
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

435110908
787357941
133
32876
97446974
669030021
16885
137978289
489836279
875388096

result:

ok 10 numbers

Test #8:

score: 0
Accepted
time: 38ms
memory: 2168kb

input:

1000
134
??????????????????????????????????????A???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????A??????????????????????????????????????????????????C???????????????????????????????????????????????????????
?????????????????????...

output:

199995903
705696630
0
203647773
822020306
749527210
670234616
37
0
104
560906492
46454550
505387049
0
694
460478190
29
481943184
413967765
0
0
21
6
230
492206796
12705406
572638993
683
542052551
0
443390157
0
37
43
262510845
562027925
176
253864571
0
79
63
0
75641010
223
696417511
0
232141163
161877...

result:

ok 1000 numbers

Test #9:

score: 0
Accepted
time: 46ms
memory: 4880kb

input:

100
14113
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

433193909
755247243
306618609
0
846559526
597
353
0
373937340
254323552
1126
285891569
255940873
890706836
572490299
756
341025547
0
42
955
325370892
488422983
464
963489407
864
460965255
64
815366074
357138334
0
0
11964
0
0
336848941
0
687087172
2639
0
0
0
3546
187602308
13
1843
4194307
387691638
9...

result:

ok 100 numbers

Test #10:

score: 0
Accepted
time: 66ms
memory: 16864kb

input:

10
143632
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

768706274
0
538040110
8569
16989
0
12277281
368749183
4662
28736

result:

ok 10 numbers

Test #11:

score: 0
Accepted
time: 78ms
memory: 60228kb

input:

1
999990
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

58907873

result:

ok 1 number(s): "58907873"

Test #12:

score: 0
Accepted
time: 70ms
memory: 60332kb

input:

1
999991
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

763410233

result:

ok 1 number(s): "763410233"

Test #13:

score: 0
Accepted
time: 56ms
memory: 60328kb

input:

1
999992
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

117815746

result:

ok 1 number(s): "117815746"

Test #14:

score: 0
Accepted
time: 95ms
memory: 60276kb

input:

1
999993
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

886807583

result:

ok 1 number(s): "886807583"

Test #15:

score: 0
Accepted
time: 149ms
memory: 60332kb

input:

1
999994
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

646501116

result:

ok 1 number(s): "646501116"

Test #16:

score: 0
Accepted
time: 70ms
memory: 60236kb

input:

1
999995
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

942525968

result:

ok 1 number(s): "942525968"

Test #17:

score: 0
Accepted
time: 80ms
memory: 60236kb

input:

1
999996
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

158612867

result:

ok 1 number(s): "158612867"

Test #18:

score: 0
Accepted
time: 66ms
memory: 60328kb

input:

1
999997
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

766997655

result:

ok 1 number(s): "766997655"

Test #19:

score: 0
Accepted
time: 64ms
memory: 60256kb

input:

1
999998
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

213500386

result:

ok 1 number(s): "213500386"

Test #20:

score: 0
Accepted
time: 81ms
memory: 60324kb

input:

1
999999
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

106750193

result:

ok 1 number(s): "106750193"

Test #21:

score: 0
Accepted
time: 62ms
memory: 60332kb

input:

1
1000000
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

427000772

result:

ok 1 number(s): "427000772"

Test #22:

score: 0
Accepted
time: 96ms
memory: 60232kb

input:

1
999990
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

200970

result:

ok 1 number(s): "200970"

Test #23:

score: 0
Accepted
time: 105ms
memory: 60256kb

input:

1
999991
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

887678988

result:

ok 1 number(s): "887678988"

Test #24:

score: 0
Accepted
time: 67ms
memory: 60232kb

input:

1
999992
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

153980

result:

ok 1 number(s): "153980"

Test #25:

score: 0
Accepted
time: 116ms
memory: 60236kb

input:

1
999993
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

108589171

result:

ok 1 number(s): "108589171"

Test #26:

score: 0
Accepted
time: 77ms
memory: 60260kb

input:

1
999994
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

69788

result:

ok 1 number(s): "69788"

Test #27:

score: 0
Accepted
time: 73ms
memory: 60252kb

input:

1
999995
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

124539

result:

ok 1 number(s): "124539"

Test #28:

score: 0
Accepted
time: 83ms
memory: 60280kb

input:

1
999996
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

427276277

result:

ok 1 number(s): "427276277"

Test #29:

score: 0
Accepted
time: 156ms
memory: 60244kb

input:

1
999997
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

138787475

result:

ok 1 number(s): "138787475"

Test #30:

score: 0
Accepted
time: 85ms
memory: 60224kb

input:

1
999998
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

214417

result:

ok 1 number(s): "214417"

Test #31:

score: 0
Accepted
time: 72ms
memory: 60260kb

input:

1
999999
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

313179

result:

ok 1 number(s): "313179"

Test #32:

score: 0
Accepted
time: 106ms
memory: 60248kb

input:

1
1000000
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

843526058

result:

ok 1 number(s): "843526058"