QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#711021#9536. Athlete Welcome CeremonyKingdywCompile Error//C++234.4kb2024-11-04 23:51:082024-11-04 23:51:13

Judging History

This is the latest submission verdict.

  • [2024-11-04 23:51:13]
  • Judged
  • [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: ...