QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#713550 | #9536. Athlete Welcome Ceremony | ucup-team2179# | RE | 0ms | 0kb | C++20 | 2.1kb | 2024-11-05 19:46:21 | 2024-11-05 19:46:21 |
Judging History
answer
#include<bits/stdc++.h>
#define pii pair<int, int>
using namespace std;
const int N = 303, mod = 1e9 + 7;
int n, q, dp[2][N][N][3];
int sum[N][N][N][4];
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> n >> q;
string st;
cin >> st;
st = ' ' + st;
int s = 0;
if(st[1] == '?'){
dp[1][1][0][0] = dp[1][0][1][1] = dp[1][0][0][2] = 1;
s++;
}
else
dp[1][0][0][st[1] - 'a'] = 1;
for (int i = 2; i <= n; i++){
memset(dp[i & 1], 0, sizeof dp[i & 1]);
for (int j = 0; j <= s; j++)
for (int k = 0; k + j <= s; k++){
if(st[i] == '?'){
dp[i & 1][j + 1][k][0] = (dp[(i - 1) & 1][j][k][1] + dp[(i - 1) & 1][j][k][2]) % mod;
dp[i & 1][j][k + 1][1] = (dp[(i - 1) & 1][j][k][0] + dp[(i - 1) & 1][j][k][2]) % mod;
dp[i & 1][j][k][2] = (dp[(i - 1) & 1][j][k][0] + dp[(i - 1) & 1][j][k][1]) % mod;
}
else {
for(int t : {0, 1, 2})
if(st[i] - 'a' != t) dp[i & 1][j][k][st[i] - 'a'] = (dp[i & 1][j][k][st[i] - 'a'] + dp[(i - 1) & 1][j][k][t]) % mod;
}
}
if(st[i] == '?')
s++;
}
for (int i = 0; i <= s; i++)
for (int j = 0; i + j <= s; j++)
for(int t : {0, 1, 2})
sum[i][j][s - i - j][0] = (sum[i][j][s - i - j][0] + dp[n & 1][i][j][t]) % mod;
for(int t : {1, 2, 3})
for (int i = 0; i <= n; i++)
for (int j = 0; j <= n; j++)
for (int k = 0; k <= n; k++){
int x;
if(t == 1)
x = (k != 0) * sum[i][j][k - 1][t];
if(t == 2)
x = (j != 0) * sum[i][j - 1][k][t];
if(t == 3)
x = (i != 0) * sum[i - 1][j][k][t];
sum[i][j][k][t] = (x + sum[i][j][k][t-1]) % mod;
}
for(int i = 1; i <= q; i++){
int x, y, z;
cin >> x >> y >> z;
cout << sum[x][y][z][3] << '\n';
}
return 0;
}
詳細信息
Test #1:
score: 0
Runtime Error
input:
6 3 a?b??c 2 2 2 1 1 1 1 0 2