QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#232510#7559. Bocchi the RocklefyTL 9835ms6568kbC++202.2kb2023-10-30 15:44:252023-10-30 15:44:25

Judging History

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

  • [2023-10-30 15:44:25]
  • 评测
  • 测评结果:TL
  • 用时:9835ms
  • 内存:6568kb
  • [2023-10-30 15:44:25]
  • 提交

answer

#include <bits/stdc++.h>
#define ll long long 
using namespace std;
const int N=5e4+10,mod=998244353;
int add(ll x,int y){
    x+=y;
    while(x>=mod)x-=mod;
    return x;
}
char a[N<<1];
int dp[2][N][2][2];
//end colv cole
int ce[N][2],cv[N][2],c[N][2];
void solve(int op,int now,int x){
    if(x==0){
        for(int i=0;i<=1;i++)dp[op][x][0][i]=0;
        for(int i=0;i<=1;i++){
            for(int j=0;j<=1;j++)if(cv[now][i]&&ce[now][j]){
                auto &val=dp[op][x][0][j];
                val=add(val,dp[op^1][1][i][j^1]);
            }
            dp[op][x][0][i]=add(dp[op][x][0][i],dp[op^1][x][0][i]*c[now][i]);
        }
        return;
    }
    for(int i=0;i<=1;i++)for(int j=0;j<=1;j++){
        int &val=dp[op][x][i][j];
        val=0;
        if(cv[now][i]&&ce[now][j]){//put back
            if(x==1){
                val=dp[op^1][x-1][0][j^1];
            }else val=dp[op^1][x-1][i^1][j^1];
        }
        if(cv[now][i^1]&&ce[now][j])
            val=add(val,dp[op^1][x+1][i^1][j^1]);
        val=add(val,dp[op^1][x][i][j]*c[now][j]);    
    }   
    
}
int main() {
    int n;
    scanf("%d%s",&n,a+1);
    int op=1;
    for(int i=1;i<=n;i++){
        int nxt=i==n?1:i+1;
        c[i][1]=(a[i*2-1]!='P'&&a[nxt*2-1]!='P')*(a[i*2]=='?'?2:1);
        c[i][0]=(a[i*2-1]!='Y'&&a[nxt*2-1]!='Y')*(a[i*2]=='?'?2:1);
        ce[i][0]=a[i*2-1]!='P'&&a[nxt*2-1]!='Y';
        ce[i][1]=a[i*2-1]!='Y'&&a[nxt*2-1]!='P';//PY
        cv[i][0]=a[i*2]!='R';
        cv[i][1]=a[i*2]!='B';
    }
    for(int i=0;i<=1;i++)for(int j=0;j<=1;j++){
        dp[op][1][i][j]=ce[1][j]&&cv[1][i];
        dp[op][0][0][j]=c[1][j];
    }
    // for(int i=0;i<=1;i++,cout<<"\n")for(int k=0;k<=1;k++)for(int k2=0;k2<=1;k2++)cout<<dp[op][i][k][k2]<<" ";
    // cout<<"\n";
    // cout<<dp[op][1][0][1]
    for(int i=2;i<=n;i++){
        op^=1;
        for(int j=0;j<=i;j++){
            solve(op,i,j); 
            // cout<<dp[op][j][0][0]<<" "<<dp[op][j][0][1]<<" "<<dp[op][j][1][0]<<" "<<dp[op][j][1][1]<<" \n";
        }
        // cout<<"\n";
    }  
    int ans=0;
    for(int j=0;j<=1;j++)ans=add(ans,dp[op][0][0][j]);
    printf("%d",ans);
    return 0;
}

详细

Test #1:

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

input:

2
????

output:

12

result:

ok 1 number(s): "12"

Test #2:

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

input:

3
??YR?B

output:

4

result:

ok 1 number(s): "4"

Test #3:

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

input:

5
YBYRPBYRYB

output:

0

result:

ok 1 number(s): "0"

Test #4:

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

input:

10
PRPBPRPRPRPBYB?R?BY?

output:

3

result:

ok 1 number(s): "3"

Test #5:

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

input:

10
?R?R?BYB?R?R?B?B?BYR

output:

96

result:

ok 1 number(s): "96"

Test #6:

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

input:

10
YRPRYRY???P?YB?BYRY?

output:

32

result:

ok 1 number(s): "32"

Test #7:

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

input:

10
PBYBPRPBYRPBYRYBPRPB

output:

0

result:

ok 1 number(s): "0"

Test #8:

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

input:

10
PBPRPRYBYRYRYB?B?RYB

output:

0

result:

ok 1 number(s): "0"

Test #9:

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

input:

10
PRP?PBPRYR??Y?YRPB?R

output:

12

result:

ok 1 number(s): "12"

Test #10:

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

input:

10
?RYB??P??B?B?B???RPR

output:

416

result:

ok 1 number(s): "416"

Test #11:

score: 0
Accepted
time: 9549ms
memory: 6568kb

input:

50000
YBPBYRPRPRPRPBPRPBPBPBYRPRPBPBYRPBPRYBYBPBPBPRPBPBYRYBYRPBYRYRPBYRYRYRPBYBYRPBPBYBYBPBYRPBPBYBYBYRPBPRYBPBYBPRPRYBPRPBYBPRPBYRPBYBPRYBPBPBYRYBYBYBPRYBYRPRPRPRPRYRYBPBPBPBPRPRYBYRYBPRPRPRPBYBPBPRYRPRPBYRPBYRYRPBYBYBPBYRYRPBPRYBPRYBPBPBYRPBPBYBYBPRPBYBYBYRYRPBPRPRPRPRPRYBPBPBPRYBYRPRPRYBYRPRPBYR...

output:

0

result:

ok 1 number(s): "0"

Test #12:

score: 0
Accepted
time: 9372ms
memory: 6384kb

input:

50000
YRPBPBYRYRYRYBYBYRPBPBPBPBPBYRYBPBPRYBPBYRYRPRYBYBYBYRPRPBPBPRYRPBYBYBPBYRYRPRPBPBPBPRYBYBYRYRPRPRYBPRPBYRPBPRYRPRYBPRYBYBYRYRYBYRYRYBYRPBPBPBYBPBPRPBPRYRPRYBYBPBPRPBPBPRPRPBYRYRPBPBPBYRPBYBYBYRPBPRPBPRYBPRPRYBPRPBPBYRYRYRYBYRPRPRYBYBYBPBPRPBPRYRYRPRPRPBPBPRPRPBYBYRPRPRPBYBYRPBYBPRPRPRPRPRPBPB...

output:

0

result:

ok 1 number(s): "0"

Test #13:

score: 0
Accepted
time: 9456ms
memory: 6388kb

input:

50000
PRPRYBPBYBYBPBYRPBYRYBPBPBPRPRPBYBYRPRPRPRPRPRYRYBYRPBPBPRYRPRPBPRPBPRPRPRPBYRYRYRPBYBYRYRPRPRPRPRYBYBYBYBPBPRPBPBPRYRPRYRPRPRYRPRPBPBYRYBPRPRYRPBPBYBYBPBYRPBPRYRPRYRYBPBPBPRPBPRPRPRYBPBPBYBYBPRYRPRYRPBYRYBYRYRPBYBPBPRPRYRPRYBYRPRPRYBYBYBPBYRYRYRYRYRYRPBYBYRYRYBYRPRYRPBPBYBYRYBPBYBPRYBPBYRYBPR...

output:

0

result:

ok 1 number(s): "0"

Test #14:

score: 0
Accepted
time: 9835ms
memory: 6568kb

input:

50000
YRPRPBPRYRYRPRYBPBYRPRPBYRYRYRPBPBYRPRYBYBYBPRYRPBPRPBPBYRPRPRPBPBYBYBPRPRPRYRYRYBYRPBYBPBPRYBPRYBYBYBPBYBYBPBPBPRYRPRPBYRYBYRPRYBYRPRYRPRPRYRPBYRYRYBYRYRPRYRYRPBPRPBYRYRPBYRPBPBPBPRPBYBYBPRYBPBPBYRYRYBYRPRPBPRYBPRPBYRPBYBYBPBPRPBYRYRPRPBPRPBPBYRPRPBYRPRPRYRYRPBYBYBPBPBYBPBYBYRYBYRPBPBPBPRYRPB...

output:

0

result:

ok 1 number(s): "0"

Test #15:

score: 0
Accepted
time: 9367ms
memory: 6428kb

input:

50000
YBPBYRPRYRPRPBPBYBYRPBYRPBPRPRPBPBPBYRYBYRPBYRYRPBYRPRPRYBPRYRYBYBPRPRYBYBPRPRPRYRPRYBPRPBYRPBYRPBYRPRPBPBPRPBPBYRYBPRPBPBPBPBYRYRPRPRYBYRPRYBYBYBYBYRYRPBPRYRYRPRYBPRPBPRPRPRPRPBPRPBYBPBPBPBYRPBYBPBPRPBYRPRPRYRYBYRPRPBPRYBYRPBPRPBPRYRPRYBYRYBYBPRPRPRPBYRPBPBYRYRPBPRYBPRYBPRYBPRYBYRPBYBPBPBYRPR...

output:

0

result:

ok 1 number(s): "0"

Test #16:

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

input:

5000
PR?BPB?BY?PRY??RPB?R??YBY?P?YRPBYBPRP?YBYBYRPRPB?BPBPR?RYR??Y??RYR?BPRYR?RPRP?Y?PRY?Y?YB??PBYRYR?RPB?BPB?BY?P?Y?YBY??RPB?BPRPBY???PRP?YB?R?RP?PR?BPB???R?B?RP?PBYB?BPRYBP?P??B?RPRP???P???PRYB?RYRP?Y??RPR?BP?PR?BPBPRYR?B??PB??YBPB?B?BY?YB?RY?PR?RYB???BYBP?Y??RYRYB?RYBYBPBYRYBP?YBYR?RPBYBY?YRP??R?...

output:

101508706

result:

ok 1 number(s): "101508706"

Test #17:

score: 0
Accepted
time: 133ms
memory: 5644kb

input:

5000
Y?P?PBYBYBPBYB?RYBPRPB?B??YRY??RP?PB??P??BYR?B?BP??R?R?R?BYBP??BY?Y?PBY?Y?YR?RY?PRPR?R?RPR?RPR?BYR?B?B?RPRPR?RP?Y?YRP?Y??RYB????YRY?YR?BP?YB?B??Y??B?RPBYR?RP????B?RPR??????P?PRPR?RP?PR?????BP?P?YB?BYRP?PBP?YBYB?RPR?R?B?BYRYR?RPBPBY??BYBPRYRPBPB?R?RPR?BYBP?YRY?PR?BPR?RY????BYBYB?RYRP???Y???PBY?Y...

output:

748282195

result:

ok 1 number(s): "748282195"

Test #18:

score: 0
Accepted
time: 141ms
memory: 3900kb

input:

5000
P?PRPRPBP??RYB??YBPBYRYB?BP?YB?B?BY??R?BYRP??BPRY?YBYB?RY????B??????PB?RP?P??R?BPB?BY?PR?RPBPBPR?BY?YB?BYBYRYBYRYBY?Y??RP?YR?R?R?BY?PBY??RYBPBYBYBY?PBY?P?YB?RYR???RY?YBY?YRYRY?PBY?P?PBYRPRY?PBP???PBYRPRY?Y?P?P?Y?PR???B?B?RP???PBY?P?PR???BP?PR????P?YB??YR??YRYBYR?B?BP??BPB??P?Y?PRYRY?YB??YR?RY?Y...

output:

24097861

result:

ok 1 number(s): "24097861"

Test #19:

score: 0
Accepted
time: 148ms
memory: 5740kb

input:

5000
??PBPRYBPR??PRP?PRYBY???P?YRPBYBY?YR?RYR??Y?P?YRPR?BPBY?PRPRYB?RYBY?P?????YBPBYBY?Y??BY?PB???BP?P?Y???YR??YBP???YRYB?BPBPRP???PRY??B???BPB???R?RP?PB???BYRP?YB?BP??RP?PBYRPRPR??P??RY????B?????RP?YBYBPRYBYB?RYRYBP??RPB??YRPBY?PBPBP?YRYBPR?BPRYBPB???BYR?RY?PB?RYRY??BYRP?Y?YRP?PRPR????Y?PRPRYBP?YBP...

output:

447561693

result:

ok 1 number(s): "447561693"

Test #20:

score: 0
Accepted
time: 160ms
memory: 3904kb

input:

5000
P?P?P??????BPR?RY?PR??Y?Y??BPR??PB?B??PRP?YB???RPRPRPBY??R??PRYBYR?RPR?BP??R?B?RYRPRP??B?BYRY??R?RP???P?PRP??RY??RY?YBY???????P?Y?PBPRYBPRYRY?P?PB?BPR??P?Y?Y?Y?PR?RPB??Y??BYRP?PRPRY??R?RYBPR??YBP??B?RPRYBPR?BP??BYBYBPRYRPBPRPRY?Y?YBYRPBP?PB??Y?P??????R?BPBYR???BPR?B?R???BYR?BP?P?Y?YRY?PR??YBYB?...

output:

987042679

result:

ok 1 number(s): "987042679"

Test #21:

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

input:

5000
PRPBPRPRYRPRPBYBPBPBYRPBPBPBYRYRYBPBYRPRYBPBPRYBPBYRPRYBYRYRPBPBPBPBYRPBYRYBYRPRYBPBPBPRYBPRYBYBPRPBPBYRYBPRPBYRYRPRYBPRPRPBYRPBYRYRPRPRYRYRYBYBPBPBPBPRPRPBPRPRYRPBYRYRYRPBPRPRYRPRPBYBYBPBPRPRYRPBPRYBPRYBPRPRYRPRYRPBPRYBPRPRYBYRPBYRPRYBPRPRYBYRPRYRYBPRYBPRPBPRPRPRYBYRYRYRYRPBPRPBPRPBPRPBPRYRYBY...

output:

0

result:

ok 1 number(s): "0"

Test #22:

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

input:

5000
PRYRYBPBPRYRYRYRPBPBYBYRPBPBYRPRPRYBYRPRYRPBPRYBPBYRPRYRYRYBPBPBYBPBYBPBYRYRYRYRYBYRPRPBYRYBPRYBYBPRPRPBYRYRYRPBYBPBPRPRYRPRPBPRYBYBPBPBYBPBPBPRPBYRYRYRYRPRYBYBPBYBYBPBYBYRPRYRPRPRYBYRYBYRYRYBYBYRPBPRYRYRPRPRPRPRYRPRYRYRPBYBYRPBYBPBPRYBPBYBPBPRYRYRPBPRPRPBPRYRPRYBPBYRPRYBPBYRYBPRPRYRYBYBPRPBYBP...

output:

0

result:

ok 1 number(s): "0"

Test #23:

score: 0
Accepted
time: 93ms
memory: 3796kb

input:

5000
PBYRYRYBYBPBYBYBPBYBYRPRYBYRPRPBYRYBPRYBPRPRYRYRPBYRYRPRYRYBPBYBPBPRPBPRPBPBP?YRPBYBYBPRPRPBPRYRPRYBPRYRYBYRPRYBYBPBYRPBPBYBYRYBPRPBYRYBPBYBYRYRYRPRPRYBYBPRYRPRYBYBYBPRYBPBYRYBPBPRPRPBYBYRYBYRPRYBYBYBYBYBPBYRPRPRPRPRYBYRPRYRYRYBYRPBYRPBPRPRYBPBYBYRPRYBPRYBPRPRPRPBYRPRPBYRYBY?PRYRYRYBPRYRYBYRYBY...

output:

172032

result:

ok 1 number(s): "172032"

Test #24:

score: 0
Accepted
time: 224ms
memory: 5660kb

input:

5000
????YRPB??PB??Y?Y??R??P?PRY?P??B??PBPBP???PRP??RY??RP?YRYB?R?BY?P??B?B??Y??R?RYRYRP???P?YBPR?R????YBP???P????R?R?BPR??Y?Y?YBP?Y??RY???PR??????P?P?Y??B?R?????B??Y?Y??BY??B?B???RYR???R?RY??RP?PR?RY?PB??Y?P?P???P??B?R??YR?BYRY??????R??Y??RYRPBYR??Y?P?P??B?RP?Y??B?BPBP?P???Y??B?RY?YBYB?RYRYRYBYB???...

output:

589400951

result:

ok 1 number(s): "589400951"

Test #25:

score: 0
Accepted
time: 284ms
memory: 3900kb

input:

5000
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:

312356960

result:

ok 1 number(s): "312356960"

Test #26:

score: -100
Time Limit Exceeded

input:

50000
YR?BPR?BP??B??YBY?PRY?PRYB??PB?BPBY??R???RPR??Y?Y???PR???BPBPRPRY?Y?P?Y?P?YR??YR?RP?YRP??B?B???R??YR?BPR?B?R?R??Y?YBYRPR?BPBPRPRPB??YBPR??PR??Y??RYBY??RPRPB??YBPR??PBY?PBPBPRPRPRYRYB??YR?BYRP?P??RYR?R?R?RPBP?Y?YR??YBYR??YRYR???BPRPR???BP??B?BPBYBYBYR?B?RPRPBP?P?YBPB?R?BPBPR?BP?PRYRPB?BY?Y??B?B...

output:


result: