QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#713761 | #9536. Athlete Welcome Ceremony | Mu_Silk# | RE | 0ms | 0kb | C++20 | 2.2kb | 2024-11-05 20:28:47 | 2024-11-05 20:28:47 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll Mod=1e9+7;
ll dp[2][301][301][3];
ll n,q,used[301],sum[301][301][301];
char ok[301];
void solve(){
cin>>n>>q;
for(ll i=1;i<=n;i++) {cin>>ok[i];used[i]=used[i-1]+(ok[i]=='?');}
ll now=0;
if(ok[1]=='?') dp[0][1][0][0]=dp[0][0][1][1]=dp[0][0][0][2]=1;
if(ok[1]=='a') dp[0][0][0][0]=1;
if(ok[1]=='b') dp[0][0][0][1]=1;
if(ok[1]=='c') dp[0][0][0][2]=1;
for(ll i=2;i<=n;i++){
now^=1;
for(ll j=0;j<=used[i];j++) for(ll k=0;k<=used[i];k++){
dp[now][j][k][0]=dp[now][j][k][1]=dp[now][j][k][2]=0;
if(j+k>used[i]) break;
if(ok[i]=='?'){
if(j>=1) dp[now][j][k][0]=(dp[now^1][j-1][k][1]+dp[now^1][j-1][k][2])%Mod;
if(k>=1) dp[now][j][k][1]=(dp[now^1][j][k-1][0]+dp[now^1][j][k-1][2])%Mod;
if(j+k<used[i]) dp[now][j][k][2]=(dp[now^1][j][k][0]+dp[now^1][j][k][1])%Mod;
}
if(ok[i]=='a'){
dp[now][j][k][0]=(dp[now^1][j][k][1]+dp[now^1][j][k][2])%Mod;
}
if(ok[i]=='b'){
dp[now][j][k][1]=(dp[now^1][j][k][0]+dp[now^1][j][k][2])%Mod;
}
if(ok[i]=='c'){
dp[now][j][k][2]=(dp[now^1][j][k][1]+dp[now^1][j][k][0])%Mod;
}
}
}
for(ll i=0;i<=used[n];i++) for(ll j=0;j<=used[n];j++) for(ll k=0;k<=used[n];k++){
if(i+j+k==used[n]) {
sum[i][j][k]=(dp[now][i][j][0]+dp[now][i][j][1]+dp[now][i][j][2])%Mod;
}
sum[i][j][k]+=(sum[i-1][j][k]+sum[i][j-1][k]+sum[i][j][k-1]-sum[i-1][j-1][k]-sum[i-1][j][k-1]-sum[i][j-1][k-1]+sum[i-1][j-1][k-1])%Mod;
sum[i][j][k]=(sum[i][j][k]%Mod+Mod)%Mod;
// cout<<i<<" "<<j<<" "<<k<<" "<<sum[i][j][k]<<'\n';
}
// cout<<used[n]<<'\n';
for(ll i=1;i<=q;i++){
ll x,y,z;
cin>>x>>y>>z;
x=min(x,used[n]);
y=min(y,used[n]);
z=min(z,used[n]);
cout<<sum[x][y][z]<<'\n';
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int n=1;
//cin>>n;
while(n--)solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Runtime Error
input:
6 3 a?b??c 2 2 2 1 1 1 1 0 2