QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#714704#9536. Athlete Welcome Ceremonyucup-team1766WA 0ms13944kbC++203.1kb2024-11-06 03:20:252024-11-06 03:20:27

Judging History

This is the latest submission verdict.

  • [2024-11-06 03:20:27]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 13944kb
  • [2024-11-06 03:20:25]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;

#define pb push_back
#define f first
#define s second
#define pll pair<ll, ll>
#define pii pair<int, int>

const int MOD = 1e9+7;

const int N = 300;
int dp[N+1][N+1][N+1][3];
int vals[N+1][N+1][N+1];
int pref[N+2][N+2][N+2];

int main(){
    cin.tie(0), ios::sync_with_stdio(0);
    int n, q;
    cin >> n >> q;
    string str;
    cin >> str;

    if(str[0] == 'a'){
        dp[1][0][0][0] = 1;
    }else if(str[0] == 'b'){
        dp[1][0][0][1] = 1;
    }
    else if(str[0] == 'c'){
        dp[1][0][0][2] = 1;
    }else{
        dp[1][1][0][0] = 1;
        dp[1][0][1][1] = 1;
        dp[1][0][0][2] = 1;
    }

    for(int i = 2; i <= n; i++){
        char c = str[i-1];
        for(int j = 0; j <= n; j++){
            for(int k = 0; k <= n; k++){
                if(c == 'a'){
                    dp[i][j][k][0] = (dp[i-1][j][k][1] + dp[i-1][j][k][2])%MOD;
                }else if(c == 'b'){
                    dp[i][j][k][1] = (dp[i-1][j][k][0] + dp[i-1][j][k][2])%MOD;
                }else if(c == 'c'){
                    dp[i][j][k][2] = (dp[i-1][j][k][0] + dp[i-1][j][k][1])%MOD;
                }else{
                    if (j) dp[i][j][k][0] = (dp[i-1][j-1][k][1] + dp[i-1][j-1][k][2])%MOD;
                    if (k) dp[i][j][k][1] = (dp[i-1][j][k-1][0] + dp[i-1][j][k-1][2])%MOD;
                    dp[i][j][k][2] = (dp[i-1][j][k][0] + dp[i-1][j][k][1])%MOD;
                }
            }
        }
    }

    int ques = count(str.begin(),str.end(),'?');
    for (int a = 0; a <= n; a++) for (int b = 0; b <= n; b++) {
		if (0 <= ques-a-b and ques-a-b <= n) vals[a][b][ques-a-b] = accumulate(dp[n][a][b], dp[n][a][b]+3, 0ll) % MOD;
    }

	/*
	for (int i = 1; i <= n; i++) for (int j = 0; j <= n; j++) for (int k = 0; k <= n; k++) {
	pref[i][j][k] = (pref[i][j][k] + pref[i-1][j][k]) % MOD;
    }
    for (int i = 0; i <= n; i++) for (int j = 1; j <= n; j++) for (int k = 0; k <= n; k++) {
	pref[i][j][k] = (pref[i][j][k] + pref[i][j-1][k]) % MOD;
    }
    for (int i = 0; i <= n; i++) for (int j = 0; j <= n; j++) for (int k = 1; k <= n; k++) {
	pref[i][j][k] = (pref[i][j][k] + pref[i][j][k-1]) % MOD;
    }
	*/
	/*
	for (int i = 0; i <= n; i++){
		for (int j = 0; j <= n; j++){
			for (int k = 0; k <= n; k++) {
				cout << vals[i][j][k] << " ";
			}
			cout << "\n";
		}
		cout << "\n";
	} 
	*/
    for (int i = 1; i <= n+1; i++){
		for (int j = 1; j <= n+1; j++){
			for (int k = 1; k <= n+1; k++) {
				ll val = (ll)vals[i-1][j-1][k-1] + pref[i-1][j][k] + pref[i][j-1][k] + pref[i][j][k-1] - pref[i-1][j-1][k] - pref[i-1][j][k-1] - pref[i][j-1][k-1] + pref[i-1][j-1][k-1];
				pref[i][j][k] = (val+8*MOD) % MOD;
			}
		} 
	} 
    
	/*
	for (int i = 0; i <= n; i++){
		for (int j = 0; j <= n; j++){
			for (int k = 0; k <= n; k++) {
				cout << pref[i][j][k] << " ";
			}
			cout << "\n";
		}
		cout << "\n";
	} 
	*/
	
    while (q--) {
	    int x, y, z; cin >> x >> y >> z;
	    cout << pref[x+1][y+1][z+1] << '\n';
    }
}

详细

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 13944kb

input:

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

output:

71767643
-719476259
-539607194

result:

wrong answer 1st lines differ - expected: '3', found: '71767643'