Submission #18272984


Source Code Expand

Copy
#define LOCAL
#define _USE_MATH_DEFINES
#include <array>
#include <cassert>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <vector>
#include <queue>
#include <stack>
#include <list>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <algorithm>
#include <complex>
#include <cmath>
#include <numeric>
#include <bitset>
#include <functional>
#include <random>
#include <ctime>

using namespace std;

template <typename A, typename B>
ostream& operator <<(ostream& out, const pair<A, B>& a) {
  out << "(" << a.first << "," << a.second << ")";
  return out;
}
template <typename T, size_t N>
ostream& operator <<(ostream& out, const array<T, N>& a) {
  out << "["; bool first = true;
  for (auto& v : a) { out << (first ? "" : ", "); out << v; first = 0;} out << "]";
  return out;
}
template <typename T>
ostream& operator <<(ostream& out, const vector<T>& a) {
  out << "["; bool first = true;
  for (auto& v : a) { out << (first ? "" : ", "); out << v; first = 0;} out << "]";
  return out;
}
template <typename T, class Cmp>
ostream& operator <<(ostream& out, const set<T, Cmp>& a) {
  out << "{"; bool first = true;
  for (auto& v : a) { out << (first ? "" : ", "); out << v; first = 0;} out << "}";
  return out;
}
template <typename U, typename T, class Cmp>
ostream& operator <<(ostream& out, const map<U, T, Cmp>& a) {
  out << "{"; bool first = true;
  for (auto& p : a) { out << (first ? "" : ", "); out << p.first << ":" << p.second; first = 0;} out << "}";
  return out;
}
#ifdef LOCAL
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
#else
#define trace(...) 42
#endif
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
  cerr << name << ": " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
  const char* comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << ": " << arg1 << " |";
  __f(comma + 1, args...);
}

typedef long long int64;
typedef pair<int, int> ii;
#define SZ(x) (int)((x).size())
const int INF = 1 << 29;
const int MOD = 1e9 + 7;
mt19937 mrand(random_device{}());
int rnd(int x) { return mrand() % x; }

struct fast_ios {
  fast_ios() {
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    cout << fixed << setprecision(10);
  };
} fast_ios_;

int main() {
  int n;
  cin >> n;
  string c(4, ' ');
  for (int i = 0; i < 4; ++i) cin >> c[i];
  if (n <= 3) {
    cout << 1 << '\n';
    return 0;
  }

  set<string> dp, ndp;
  dp = {"AB"};
  vector<int> ret(n + 1, 1);
  for (int k = 3; k <= n && k <= 10; ++k) {
    ndp.clear();
    for (auto& s : dp) {
      for (int i = 0; i < k - 2; ++i) {
        int x = (s[i] - 'A') * 2 + (s[i + 1] - 'A');
        string t = s.substr(0, i + 1) + c[x] + s.substr(i + 1);
        ndp.insert(t);
      }
    }
    swap(dp, ndp);
    ret[k] = SZ(dp);
    // trace(k, SZ(dp));
  }
  if (n == 4) {
    cout << ret[n] << '\n';
    return 0;
  }

  if (ret[4] == ret[5]) {
    cout << 1 << '\n';
  } else if (ret[4] * 2 == ret[5]) {
    for (int i = 5; i <= n; ++i) {
      ret[i] = 2 * ret[i - 1] % MOD;
    }
    cout << ret[n] << '\n';
  } else {
    for (int i = 4; i <= n; ++i) {
      ret[i] = (ret[i - 1] + ret[i - 2]) % MOD;
    }
    cout << ret[n] << '\n';
  }
  return 0;
}

Submission Info

Submission Time
Task D - AB
User cuiaoxiang
Language C++ (Clang 10.0.0)
Score 600
Code Size 3501 Byte
Status AC
Exec Time 11 ms
Memory 3244 KB

Compile Error

./Main.cpp:78:11: warning: unused variable 'INF' [-Wunused-const-variable]
const int INF = 1 << 29;
          ^
1 warning generated.

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 2
AC × 82
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, hand_06.txt, hand_07.txt, hand_08.txt, hand_09.txt, hand_10.txt, hand_11.txt, hand_12.txt, hand_13.txt, hand_14.txt, hand_15.txt, hand_16.txt, hand_17.txt, hand_18.txt, hand_19.txt, hand_20.txt, hand_21.txt, hand_22.txt, hand_23.txt, hand_24.txt, hand_25.txt, hand_26.txt, hand_27.txt, hand_28.txt, hand_29.txt, hand_30.txt, hand_31.txt, hand_32.txt, hand_33.txt, hand_34.txt, hand_35.txt, hand_36.txt, hand_37.txt, hand_38.txt, hand_39.txt, hand_40.txt, hand_41.txt, hand_42.txt, hand_43.txt, hand_44.txt, hand_45.txt, hand_46.txt, hand_47.txt, hand_48.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, random_23.txt, random_24.txt, random_25.txt, random_26.txt, random_27.txt, random_28.txt, random_29.txt, random_30.txt, random_31.txt, random_32.txt, sample_01.txt, sample_02.txt
Case Name Status Exec Time Memory
hand_01.txt AC 11 ms 3064 KB
hand_02.txt AC 2 ms 3104 KB
hand_03.txt AC 2 ms 3024 KB
hand_04.txt AC 2 ms 3012 KB
hand_05.txt AC 2 ms 3112 KB
hand_06.txt AC 2 ms 3024 KB
hand_07.txt AC 3 ms 3052 KB
hand_08.txt AC 2 ms 3156 KB
hand_09.txt AC 2 ms 3056 KB
hand_10.txt AC 2 ms 3108 KB
hand_11.txt AC 2 ms 3112 KB
hand_12.txt AC 2 ms 3172 KB
hand_13.txt AC 2 ms 3096 KB
hand_14.txt AC 2 ms 3128 KB
hand_15.txt AC 2 ms 3132 KB
hand_16.txt AC 3 ms 3012 KB
hand_17.txt AC 2 ms 3092 KB
hand_18.txt AC 2 ms 3104 KB
hand_19.txt AC 2 ms 3052 KB
hand_20.txt AC 3 ms 3112 KB
hand_21.txt AC 2 ms 3108 KB
hand_22.txt AC 2 ms 3020 KB
hand_23.txt AC 2 ms 3168 KB
hand_24.txt AC 2 ms 3028 KB
hand_25.txt AC 2 ms 3156 KB
hand_26.txt AC 2 ms 3048 KB
hand_27.txt AC 3 ms 3012 KB
hand_28.txt AC 2 ms 3156 KB
hand_29.txt AC 2 ms 3204 KB
hand_30.txt AC 2 ms 3116 KB
hand_31.txt AC 2 ms 3156 KB
hand_32.txt AC 2 ms 3160 KB
hand_33.txt AC 1 ms 3100 KB
hand_34.txt AC 2 ms 3036 KB
hand_35.txt AC 2 ms 3212 KB
hand_36.txt AC 2 ms 3108 KB
hand_37.txt AC 2 ms 3212 KB
hand_38.txt AC 2 ms 3016 KB
hand_39.txt AC 2 ms 3104 KB
hand_40.txt AC 2 ms 3232 KB
hand_41.txt AC 3 ms 3032 KB
hand_42.txt AC 2 ms 3036 KB
hand_43.txt AC 3 ms 3096 KB
hand_44.txt AC 2 ms 3112 KB
hand_45.txt AC 2 ms 3176 KB
hand_46.txt AC 3 ms 3176 KB
hand_47.txt AC 2 ms 3176 KB
hand_48.txt AC 1 ms 3056 KB
random_01.txt AC 2 ms 3032 KB
random_02.txt AC 2 ms 3024 KB
random_03.txt AC 2 ms 3244 KB
random_04.txt AC 2 ms 3064 KB
random_05.txt AC 2 ms 3156 KB
random_06.txt AC 2 ms 3152 KB
random_07.txt AC 2 ms 3120 KB
random_08.txt AC 3 ms 3008 KB
random_09.txt AC 2 ms 3020 KB
random_10.txt AC 2 ms 3068 KB
random_11.txt AC 2 ms 3204 KB
random_12.txt AC 3 ms 3028 KB
random_13.txt AC 2 ms 3068 KB
random_14.txt AC 2 ms 3116 KB
random_15.txt AC 2 ms 3096 KB
random_16.txt AC 3 ms 3224 KB
random_17.txt AC 2 ms 3148 KB
random_18.txt AC 2 ms 3120 KB
random_19.txt AC 2 ms 3124 KB
random_20.txt AC 2 ms 3116 KB
random_21.txt AC 3 ms 3240 KB
random_22.txt AC 2 ms 3040 KB
random_23.txt AC 2 ms 3160 KB
random_24.txt AC 2 ms 3176 KB
random_25.txt AC 2 ms 3176 KB
random_26.txt AC 3 ms 3100 KB
random_27.txt AC 2 ms 3112 KB
random_28.txt AC 2 ms 3068 KB
random_29.txt AC 2 ms 3048 KB
random_30.txt AC 2 ms 3116 KB
random_31.txt AC 2 ms 3228 KB
random_32.txt AC 2 ms 3116 KB
sample_01.txt AC 2 ms 3028 KB
sample_02.txt AC 4 ms 3072 KB