QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#740977 | #9536. Athlete Welcome Ceremony | CSQ# | RE | 0ms | 0kb | C++17 | 2.0kb | 2024-11-13 12:46:28 | 2024-11-13 12:46:31 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define sz(x) (int)(x).size()
int dp[4][301][301][301];
int p[301][301][301];
const int MOD = 1e9+7;
void add(int &x,int y){
x+=y;
if(x>=MOD)x-=MOD;
}
int main()
{
//cin.tie(0)->sync_with_stdio(0);
//cin.exceptions(cin.failbit);
int n,q;
cin>>n>>q;
string s;
cin>>s;
dp[0][0][0][0] = 1;
vector<int>cnt(4,0);
for(int i=1;i<=n;i++){
int sum = 0;
for(int j=0;j<=i;j++){
for(int k=0;k<=i;k++){
if(s[i-1] == 'a' || s[i-1] == '?'){
for(int c=0;c<4;c++){
if(c==1)continue;
add(dp[1][i][j][k],dp[c][i-1][j][k]);
}
}
if((s[i-1] == 'b' || s[i-1] == '?') && j){
for(int c=0;c<4;c++){
if(c==2)continue;
add(dp[2][i][j][k],dp[c][i-1][j-1][k]);
}
}
if((s[i-1] == 'c' || s[i-1] == '?') && k){
for(int c=0;c<4;c++){
if(c==3)continue;
add(dp[3][i][j][k],dp[c][i-1][j][k-1]);
}
}
//cout<<i<<" "<<j<<" "<<k<<'\n';
//cout<<dp[1][i][j][k]<<'\n';
//cout<<dp[2][i][j][k]<<'\n';
//cout<<dp[3][i][j][k]<<'\n';
}
}
if(s[i-1] == '?')cnt[0]++;
if(s[i-1] == 'a')cnt[1]++;
if(s[i-1] == 'b')cnt[2]++;
if(s[i-1] == 'c')cnt[3]++;
}
for(int i=0;i<=n;i++){
for(int j=0;j<=n;j++){
for(int c=1;c<=3;c++){
add(p[n-i-j][i][j],dp[c][n][i][j]);
}
//if(p[n-i-j][i][j])cout<<n-i-j<<" "<<i<<" "<<j<<" "<<p[n-i-j][i][j]<<'\n';
}
}
for(int i=0;i<=300;i++){
for(int j=0;j<=300;j++){
for(int k=0;k<=300;k++){
if(i)add(p[i][j][k],p[i-1][j][k]);
if(j)add(p[i][j][k],p[i][j-1][k]);
if(k)add(p[i][j][k],p[i][j][k-1]);
if(i && j)add(p[i][j][k],MOD-p[i-1][j-1][k]);
if(i && k)add(p[i][j][k],MOD-p[i-1][j][k-1]);
if(j && k)add(p[i][j][k],MOD-p[i][j-1][k-1]);
if(i && j && k)add(p[i][j][k],p[i-1][j-1][k-1]);
}
}
}
while(q--){
int x,y,z;
cin>>x>>y>>z;
x = min(x+cnt[1],300);
y = min(y+cnt[2],300);
z = min(z+cnt[3],300);
//cout<<x<<" "<<y<<" "<<z<<'\n';
cout<<p[x][y][z]<<'\n';
}
}
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