QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#763976#9536. Athlete Welcome CeremonyXiaoYang3WA 164ms222860kbC++233.6kb2024-11-19 23:07:442024-11-19 23:07:46

Judging History

This is the latest submission verdict.

  • [2024-11-19 23:07:46]
  • Judged
  • Verdict: WA
  • Time: 164ms
  • Memory: 222860kb
  • [2024-11-19 23:07:44]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 2e5 + 5;
using pii = pair<int, int>;
ll n, m, q;
int dp[303][303][303][2][3];
// 12 13 14
ll ans[303][303][303];
const int P = 1e9 + 7;
string s;
void solve() {
    cin >> n >> q;
    cin >> s;
    s = ' ' + s;
    int cnt = 0;
    int now = 0;
    if (s[1] == '?') {
        dp[1][0][0][now][0] = 1;
        dp[0][1][0][now][1] = 1;
        dp[0][0][1][now][2] = 1;
        cnt = 1;
    } else {
        int u = s[1] - 'a';
        dp[0][0][0][now][u] = 1;
    }
    for (int i = 2; i <= n; i++) {
        if (s[i] == '?') {
            for (int u = 0; u <= 2; u++) {
                for (int j = 0; j <= cnt; j++) {
                    for (int k = 0; (k + j) <= cnt; k++) {
                        for (int z = cnt - (k + j); (z + j + k) <= cnt; z++) {
                            for (int ii = 0; ii <= 2; ii++) {
                                if (ii != u) {
                                    int jj = j, kk = k, zz = z;
                                    if (u == 0) {
                                        jj++;
                                    }
                                    if (u == 1) {
                                        kk++;
                                    }
                                    if (u == 2) {
                                        zz++;
                                    }
                                    dp[jj][kk][zz][now ^ 1][u] +=
                                        dp[j][k][z][now][ii];
                                    dp[jj][kk][zz][now ^ 1][u] %= P;
                                }
                            }
                        }
                    }
                }
            }
            cnt++;
        } else {
            int u = s[i] - 'a';
            for (int j = 0; j <= cnt; j++) {
                for (int k = 0; (k + j) <= cnt; k++) {
                    for (int z = cnt - (k + j); (z + j + k) <= cnt; z++) {
                        for (int ii = 0; ii <= 2; ii++) {
                            if (ii != u) {
                                dp[j][k][z][now ^ 1][u] += dp[j][k][z][now][ii];
                                dp[j][k][z][now ^ 1][u] %= P;
                            }
                        }
                    }
                }
            }
        }
        now ^= 1;
    }

    for (int i = 0; i <= cnt; i++) {
        for (int j = 0; (j + i) <= cnt; j++) {
            for (int z = cnt - (j + i); (j + i + z) <= cnt; z++) {
                for (int u = 0; u <= 2; u++) {
                    ans[i + 1][j + 1][z + 1] += dp[i][j][z][now][u];
                    ans[i + 1][j + 1][z + 1] %= P;
                }
            }
        }
    }
    // 111 102 012
    for (int i = 1; i <= 302; i++) {
        for (int j = 1; j <= 302; j++) {
            for (int k = 1; k <= 302; k++) {
                ans[i][j][k] += ans[i - 1][j][k] + ans[i][j - 1][k] +
                                ans[i][j][k - 1] - ans[i - 1][j - 1][k] -
                                ans[i - 1][j][k - 1] - ans[i][j - 1][k - 1] +
                                ans[i - 1][j - 1][k - 1];
                ans[i][j][k] %= P;
            }
        }
    }  // 3
    // 122=022+112+121-012-121-111+011
    // cout << ans[0][2][2] << "\n";
    while (q--) {
        int x, y, z;
        cin >> x >> y >> z;
        cout << ans[x + 1][y + 1][z + 1] << '\n';
    }
}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int _ = 1;
    //  cin >> _;
    while (_--) {
        solve();
    }
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 140ms
memory: 221084kb

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: 0
Accepted
time: 164ms
memory: 222564kb

input:

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

output:

30
72
96

result:

ok 3 lines

Test #3:

score: 0
Accepted
time: 143ms
memory: 222860kb

input:

1 1
?
0 1 1

output:

2

result:

ok single line: '2'

Test #4:

score: -100
Wrong Answer
time: 143ms
memory: 221336kb

input:

10 10
acab?cbaca
0 2 0
1 1 2
4 2 3
1 1 1
3 5 1
0 5 2
2 2 0
1 2 5
4 3 0
1 1 3

output:

7
25
25
25
25
13
19
25
19
25

result:

wrong answer 1st lines differ - expected: '0', found: '7'