QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#718626 | #9536. Athlete Welcome Ceremony | paoxiaomo | Compile Error | / | / | C++23 | 4.3kb | 2024-11-06 21:00:26 | 2024-11-06 21:00:31 |
Judging History
This is the latest submission verdict.
- [2024-11-06 21:00:31]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2024-11-06 21:00:26]
- Submitted
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
// #define max(a, b) ((a) > (b) ? (a) : (b))
// #define min(a, b) ((a) < (b) ? (a) : (b))
#define pb push_back
#define LNF 1e18
#define INF 0x7fffffff
#define int long long
#define lowbit(x) ((x) & (-x))
#define abs(x) llabs(x)
#define endl '\n'
#define Y() cout << "Yes" << endl
#define N() cout << "No" << endl
const db eps = 1e-9;
const int mod =1e9+7;
const int MAXN = 2e5 + 5;
int dp[3][305][305][305],nu[305],cnt=0,af[305];
void solve()
{
int n,m;cin>>n>>m;
string s;cin>>s;
for(int i=0;i<n;i++){
if(s[i]=='?'){
if(i==0)
nu[++cnt]=-2;//前面没有
else if(s[i-1]=='?')
nu[++cnt]=-1;//前面按照dp数组的来
else nu[++cnt]=s[i-1]-'a';//前面固定
if(i!=n-1){
if(s[i+1]!='?'){
af[cnt]=s[i+1]-'a';
}else af[cnt]=-1;
}else af[cnt]=-1;
}
}
for(int i=0;i<3;i++)dp[i][0][0][0]=1;
for(int i=0;i<=300;i++){
for(int j=0;j<=300;j++){
for(int k=0;k<=300;k++){
int po=i+j+k;
if(po==0||po>cnt){
break;
}else if(po==1){//不可能有-1
if(nu[po]==-2){
if(i&&af[po]!=0)
dp[0][i][j][k]=(dp[0][i][j][ka]+1)%mod;
if(j&&af[po]!=1)
dp[1][i][j][k]=(dp[1][i][j][k]+1)%mod;
if(k&&af[po]!=2)
dp[2][i][j][k]=(dp[2][i][j][k]+1)%mod;
}else{
if(i&&nu[po]!=0&&af[po]!=0)
dp[0][i][j][k]=(dp[0][i][j][k]+1)%mod;
if(j&&nu[po]!=1&&af[po]!=1)
dp[1][i][j][k]=(dp[1][i][j][k]+1)%mod;
if(k&&nu[po]!=2&&af[po]!=2)
dp[2][i][j][k]=(dp[2][i][j][k]+1)%mod;
}
}else{
if(nu[po]==-1){
for(int f=0;f<3;f++){
if(i&&f!=0&&af[po]!=0)
dp[0][i][j][k]=(dp[0][i][j][k]+dp[f][i-1][j][k])%mod;
if(j&&f!=1&&af[po]!=1)
dp[1][i][j][k]=(dp[1][i][j][k]+dp[f][i][j-1][k])%mod;
if(k&&f!=2&&af[po]!=2)
dp[2][i][j][k]=(dp[2][i][j][k]+dp[f][i][j][k-1])%mod;
}
}else{
for(int f=0;f<3;f++){
if(i&&nu[po]!=0&&af[po]!=0)
dp[0][i][j][k]=(dp[0][i][j][k]+dp[f][i-1][j][k])%mod;
if(j&&nu[po]!=1&&af[po]!=1)
dp[1][i][j][k]=(dp[1][i][j][k]+dp[f][i][j-1][k])%mod;
if(k&&nu[po]!=2&&af[po]!=2)
dp[2][i][j][k]=(dp[2][i][j][k]+dp[f][i][j][k-1])%mod;
}
}
}
}
}
}
vector<tuple<int,int,int>>v;
for(int i=0;i<=300;i++){
for(int j=0;j<=300;j++){
for(int k=0;k<=300;k++){
int po=i+j+k;
if(po==cnt)v.push_back({i,j,k});
if(po<=cnt){
for(int t=1;t>=0;t--){
dp[t][i][j][k]=(dp[t][i][j][k]+dp[t+1][i][j][k])%mod;
}
}else break;
}
}
}
while(m--){
int aa,bb,cc;cin>>aa>>bb>>cc;
int ans=0;
for(auto &[x,y,z]:v){
if(aa>=x&&bb>=y&&cc>=z){
ans=(ans+dp[0][x][y][z])%mod;
}
}cout<<ans<<endl;
}
//cout<<dp[0][2][2][2]<<endl;
}
signed main()
{
std::ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(0);
int T = 1;
//cout << fixed << setprecision(15);
// cin >> T;
while (T--)
solve();
return 0;
}
Details
answer.code: In function ‘void solve()’: answer.code:50:57: error: ‘ka’ was not declared in this scope; did you mean ‘k’? 50 | dp[0][i][j][k]=(dp[0][i][j][ka]+1)%mod; | ^~ | k