QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#718626#9536. Athlete Welcome CeremonypaoxiaomoCompile Error//C++234.3kb2024-11-06 21:00:262024-11-06 21:00:31

Judging History

This is the latest submission verdict.

  • [2024-11-06 21:00:31]
  • Judged
  • [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