QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#733442#9536. Athlete Welcome CeremonyP3KOWA 0ms28224kbC++171.4kb2024-11-10 19:01:112024-11-10 19:01:12

Judging History

This is the latest submission verdict.

  • [2024-11-10 19:01:12]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 28224kb
  • [2024-11-10 19:01:11]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

const ll MOD=1e9+7;
const int MAXN=3e2+5;

int n,q;
char s[MAXN];
ll dp[MAXN][3][MAXN][MAXN],f[MAXN][MAXN][MAXN],sum[MAXN][MAXN][MAXN];

void solve(){
	cin>>n>>q>>(s+1);
	int cnt=0;
	for(int i=1;i<=n;i++)if(s[i]=='?')cnt++;
	if(s[1]!='?')dp[1][s[1]-'a'][0][0]=1;
	else dp[1][0][1][0]=1,dp[1][1][0][1]=1,dp[1][2][0][0]=1;
	for(int i=2;i<=n;i++)for(int x=0;x<=cnt;x++)for(int y=0;y<=cnt-x;y++){
		if(s[i]!='?'){
			dp[i][s[i]-'a'][x][y]=(dp[i-1][(s[i]-'a'+1)%3][x][y]+dp[i-1][(s[i]-'a'+2)%3][x][y])%MOD;
			dp[i][(s[i]-'a'+1)%3][x][y]=0;
			dp[i][(s[i]-'a'+2)%3][x][y]=0;
		}else{
			dp[i][0][x][y]=x>0?(dp[i-1][1][x-1][y]+dp[i-1][2][x-1][y])%MOD:0;
			dp[i][1][x][y]=y>0?(dp[i-1][0][x][y-1]+dp[i-1][2][x][y-1])%MOD:0;
			dp[i][2][x][y]=x+y<cnt?(dp[i-1][0][x][y]+dp[i-1][1][x][y])%MOD:0;
		}
	}
	for(int i=0;i<=cnt;i++)for(int j=0;j<cnt-i;j++)
		f[i][j][cnt-i-j]=(dp[n][0][i][j]+dp[n][1][i][j]+dp[n][2][i][j])%MOD;
	for(int i=0;i<=n;i++)for(int j=0;j<=n;j++)for(int k=0;k<=n;k++)
		sum[i][j][k]=(f[i][j][k]+(i>0?sum[i-1][j][k]:0)+(j>0?sum[i][j-1][k]:0)+(k>0?sum[i][j][k-1]:0)
			-(i>0&&j>0?sum[i-1][j-1][k]:0)-(i>0&&k>0?sum[i-1][j][k-1]:0)-(j>0&&k>0?sum[i][j-1][k-1]:0)
			+(i>0&&j>0&&k>0?sum[i-1][j-1][k-1]:0)+3*MOD)%MOD;
	for(int i=1;i<=q;i++){
		int x,y,z;cin>>x>>y>>z;
		cout<<sum[x][y][z]<<"\n";
	}
}

int main(){
	int t;t=1;
	while(t--){
		solve();	
	}
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 26148kb

input:

6 3
a?b??c
2 2 2
1 1 1
1 0 2

output:

3
1
1

result:

ok 3 lines

Test #2:

score: -100
Wrong Answer
time: 0ms
memory: 28224kb

input:

6 3
??????
2 2 2
2 3 3
3 3 3

output:

30
72
94

result:

wrong answer 3rd lines differ - expected: '96', found: '94'