QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#44121 | #1841. Little LCS | xiaoyaowudi | AC ✓ | 156ms | 60332kb | C++14 | 1.7kb | 2022-08-13 08:32:01 | 2022-08-13 08:32:04 |
Judging History
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;
}
詳細信息
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"