QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#711021 | #9536. Athlete Welcome Ceremony | Kingdyw | Compile Error | / | / | C++23 | 4.4kb | 2024-11-04 23:51:08 | 2024-11-04 23:51:13 |
Judging History
This is the latest submission verdict.
- [2024-11-04 23:51:13]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2024-11-04 23:51:08]
- Submitted
answer
#include<bits/stdc++.h>
using namespace std;
int read() {
int res = 0, flg = 1;
char c = getchar();
while(!isdigit(c)) {
if(c == '-') flg = 0;
c = getchar();
}
while(isdigit(c)) {
res = (res << 3) + (res << 1) + (c ^ 48);
c = getchar();
}
return flg ? res : -res;
}
const int N = 1e6 + 10, mod = 1e9 + 7;
inline int pls(int a, int b) {
int m = a + b;
return (m < mod) ? m : m - mod;
}
inline int dec(int a, int b) {
int m = a - b;
return (m < 0) ? m + mod : m;
}
int n, q;
int na, nb, nc;
int dp[2][4][155][155][155], now = 0, pre = 1;
int sum[2][4][155][155][155];
char s[N];
signed main() {
n = read(), q = read();
scanf("%s", s + 1);
int na, nb, nc;
na = nb = nc = 0;
for(int i = 1; s[i]; ++i) {
if(s[i] == 'a') na++;
if(s[i] == 'b') nb++;
if(s[i] == 'c') nc++;
}
int num = 0;
if(s[1] != '?') {
if(s[1] == 'a') dp[now][0][1][0][0] = 1;
if(s[1] == 'b') dp[now][1][0][1][0] = 1;
if(s[1] == 'c') dp[now][2][0][0][1] = 1;
} else {
dp[now][0][1][0][0] = 1;
dp[now][1][0][1][0] = 1;
dp[now][2][0][0][1] = 1;
}
for(int i = 2; i <= n; ++i) {
swap(now, pre);
memset(dp[now], 0, sizeof(dp[now]));
if(s[i] == '?') {
for(int a = 0; a < i && a <= 150; ++a) {
for(int b = 0; a + b < i && b <= 150; ++b) {
int c = i - 1 - a - b;
if(c > 150) continue;
for(int last = 0; last < 3; ++last) {
if(last == 0) continue;
dp[now][0][a + 1][b][c] = pls(dp[now][0][a + 1][b][c], dp[pre][last][a][b][c]);
}
for(int last = 0; last < 3; ++last) {
if(last == 1) continue;
dp[now][1][a][b + 1][c] = pls(dp[now][1][a][b + 1][c], dp[pre][last][a][b][c]);
}
for(int last = 0; last < 3; ++last) {
if(last == 2) continue;
dp[now][2][a][b][c + 1] = pls(dp[now][2][a][b][c + 1], dp[pre][last][a][b][c]);
}
}
}
} else {
for(int a = 0; a < i && a <= 150; ++a) {
for(int b = 0; a + b < i && b <= 150; ++b) {
int c = i - 1 - a - b;
if(c > 150) continue;
for(int last = 0; last < 3; ++last) {
if(last == s[i] - 'a') continue;
if(s[i] - 'a' == 0) dp[now][0][a + 1][b][c] = pls(dp[now][0][a + 1][b][c], dp[pre][last][a][b][c]);
if(s[i] - 'a' == 1) dp[now][1][a][b + 1][c] = pls(dp[now][1][a][b + 1][c], dp[pre][last][a][b][c]);
if(s[i] - 'a' == 2) dp[now][2][a][b][c + 1] = pls(dp[now][2][a][b][c + 1], dp[pre][last][a][b][c]);
}
}
}
}
}
//cout << i << '\n';
for(int i = 0; i < 3; ++i) {
for(int a = 0; a <= 150; ++a) {
for(int b = 0; b <= 150; ++b) {
for(int c = 0; c <= 150; ++c) {
sum[now][i][a][b][c] = dp[now][i][a][b][c];
if(a >= 1) sum[now][i][a][b][c] = pls(sum[now][i][a][b][c], sum[now][i][a - 1][b][c]);
if(b >= 1) sum[now][i][a][b][c] = pls(sum[now][i][a][b][c], sum[now][i][a][b - 1][c]);
if(c >= 1) sum[now][i][a][b][c] = pls(sum[now][i][a][b][c], sum[now][i][a][b][c - 1]);
if(a >= 1 && b >= 1) sum[now][i][a][b][c] = dec(sum[now][i][a][b][c], sum[now][i][a - 1][b - 1][c]);
if(a >= 1 && c >= 1) sum[now][i][a][b][c] = dec(sum[now][i][a][b][c], sum[now][i][a - 1][b][c - 1]);
if(b >= 1 && c >= 1) sum[now][i][a][b][c] = dec(sum[now][i][a][b][c], sum[now][i][a][b - 1][c - 1]);
if(a >= 1 && b >= 1 && c >= 1) sum[now][i][a][b][c] = pls(sum[now][i][a][b][c], sum[now][i][a - 1][b - 1][c - 1]);
}
}
}
}
// cout << dp[now][2][2][2][2] << '\n';
// cout << sum[now][2][2][2][2] << '\n';
// cout << sum[now][2][3][3][3] << '\n';
// n = read(), q = read();
// scanf("%s", s + 1);
// n = 300, q = 1e3;
//for(int i = 1; i <= 300; ++i) s[i] = '?';
int a, b, c;
for(int i = 1; i <= q; ++i) {
a = read(), b = read(), c = read();
a = min(150ll, a + na);
b = min(150ll, b + nb);
c = min(150ll, c + nc);
int res = 0;
for(int j = 0; j < 3; ++j) {
res = pls(res, sum[now][j][a][b][c]);
}
cout << res << '\n';
// memset(vis, 0, sizeof(vis));
// na = read(), nb = read(), nc = read();
//na = 300, nb = 300, nc = 300;
//cout << check(1, 3, 0, 0, 0) << '\n';
//clear(1, 3, 0, 0, 0);
}
return 0;
}
詳細信息
answer.code: In function ‘int main()’: answer.code:120:12: error: no matching function for call to ‘min(long long int, int)’ 120 | a = min(150ll, a + na); | ~~~^~~~~~~~~~~~~~~ In file included from /usr/include/c++/13/algorithm:60, from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51, from answer.code:1: /usr/include/c++/13/bits/stl_algobase.h:233:5: note: candidate: ‘template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)’ 233 | min(const _Tp& __a, const _Tp& __b) | ^~~ /usr/include/c++/13/bits/stl_algobase.h:233:5: note: template argument deduction/substitution failed: answer.code:120:12: note: deduced conflicting types for parameter ‘const _Tp’ (‘long long int’ and ‘int’) 120 | a = min(150ll, a + na); | ~~~^~~~~~~~~~~~~~~ /usr/include/c++/13/bits/stl_algobase.h:281:5: note: candidate: ‘template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)’ 281 | min(const _Tp& __a, const _Tp& __b, _Compare __comp) | ^~~ /usr/include/c++/13/bits/stl_algobase.h:281:5: note: template argument deduction/substitution failed: answer.code:120:12: note: deduced conflicting types for parameter ‘const _Tp’ (‘long long int’ and ‘int’) 120 | a = min(150ll, a + na); | ~~~^~~~~~~~~~~~~~~ In file included from /usr/include/c++/13/algorithm:61: /usr/include/c++/13/bits/stl_algo.h:5775:5: note: candidate: ‘template<class _Tp> constexpr _Tp std::min(initializer_list<_Tp>)’ 5775 | min(initializer_list<_Tp> __l) | ^~~ /usr/include/c++/13/bits/stl_algo.h:5775:5: note: template argument deduction/substitution failed: answer.code:120:12: note: mismatched types ‘std::initializer_list<_Tp>’ and ‘long long int’ 120 | a = min(150ll, a + na); | ~~~^~~~~~~~~~~~~~~ /usr/include/c++/13/bits/stl_algo.h:5785:5: note: candidate: ‘template<class _Tp, class _Compare> constexpr _Tp std::min(initializer_list<_Tp>, _Compare)’ 5785 | min(initializer_list<_Tp> __l, _Compare __comp) | ^~~ /usr/include/c++/13/bits/stl_algo.h:5785:5: note: template argument deduction/substitution failed: answer.code:120:12: note: mismatched types ‘std::initializer_list<_Tp>’ and ‘long long int’ 120 | a = min(150ll, a + na); | ~~~^~~~~~~~~~~~~~~ answer.code:121:12: error: no matching function for call to ‘min(long long int, int)’ 121 | b = min(150ll, b + nb); | ~~~^~~~~~~~~~~~~~~ /usr/include/c++/13/bits/stl_algobase.h:233:5: note: candidate: ‘template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)’ 233 | min(const _Tp& __a, const _Tp& __b) | ^~~ /usr/include/c++/13/bits/stl_algobase.h:233:5: note: template argument deduction/substitution failed: answer.code:121:12: note: deduced conflicting types for parameter ‘const _Tp’ (‘long long int’ and ‘int’) 121 | b = min(150ll, b + nb); | ~~~^~~~~~~~~~~~~~~ /usr/include/c++/13/bits/stl_algobase.h:281:5: note: candidate: ‘template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)’ 281 | min(const _Tp& __a, const _Tp& __b, _Compare __comp) | ^~~ /usr/include/c++/13/bits/stl_algobase.h:281:5: note: template argument deduction/substitution failed: answer.code:121:12: note: deduced conflicting types for parameter ‘const _Tp’ (‘long long int’ and ‘int’) 121 | b = min(150ll, b + nb); | ~~~^~~~~~~~~~~~~~~ /usr/include/c++/13/bits/stl_algo.h:5775:5: note: candidate: ‘template<class _Tp> constexpr _Tp std::min(initializer_list<_Tp>)’ 5775 | min(initializer_list<_Tp> __l) | ^~~ /usr/include/c++/13/bits/stl_algo.h:5775:5: note: template argument deduction/substitution failed: answer.code:121:12: note: mismatched types ‘std::initializer_list<_Tp>’ and ‘long long int’ 121 | b = min(150ll, b + nb); | ~~~^~~~~~~~~~~~~~~ /usr/include/c++/13/bits/stl_algo.h:5785:5: note: candidate: ‘template<class _Tp, class _Compare> constexpr _Tp std::min(initializer_list<_Tp>, _Compare)’ 5785 | min(initializer_list<_Tp> __l, _Compare __comp) | ^~~ /usr/include/c++/13/bits/stl_algo.h:5785:5: note: template argument deduction/substitution failed: answer.code:121:12: note: mismatched types ‘std::initializer_list<_Tp>’ and ‘long long int’ 121 | b = min(150ll, b + nb); | ~~~^~~~~~~~~~~~~~~ answer.code:122:12: error: no matching function for call to ‘min(long long int, int)’ 122 | c = min(150ll, c + nc); | ~~~^~~~~~~~~~~~~~~ /usr/include/c++/13/bits/stl_algobase.h:233:5: note: candidate: ‘template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)’ 233 | min(const _Tp& __a, const _Tp& __b) | ^~~ /usr/include/c++/13/bits/stl_algobase.h:233:5: note: template argument deduction/substitution failed: answer.code:122:12: ...