提出 #16246262


ソースコード 拡げる

#include<bits/stdc++.h>
#define _overload3(_1, _2, _3, name, ...) name
#define _rep(i, n) repi(i, 0, n)
#define repi(i, a, b) \
  for (ll i = static_cast<int>(a); i < static_cast<int>(b); ++i)
#define rep(...) _overload3(__VA_ARGS__, repi, _rep, ) (__VA_ARGS__)  // NOLINT
#define chmax(x, a)  do { x = max(x, a); } while(0)
#define chmin(x, a)  do { x = min(x, a); } while(0)

using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
typedef pair<ll,ll> PLL;

ll N, ans;
vector<ll> v;
ll dp[3000][3000];
const ll WILD_CARD = 2500;
const ll SENTINEL = 2600;

struct T {
  ll x, y, val;
  T(ll x, ll y, ll val): x(x), y(y), val(val) {}
};

void update(ll x, ll y, ll val) {
  chmax(dp[x][y], val);
  chmax(dp[y][x], val);
  chmax(dp[x][WILD_CARD], val);
  chmax(dp[y][WILD_CARD], val);
  chmax(dp[WILD_CARD][x], val);
  chmax(dp[WILD_CARD][y], val);
  chmax(dp[WILD_CARD][WILD_CARD], val);
}

void solve() {
  cin >> N;
  v.resize(3*N);
  rep(i, 3*N)
    cin >> v[i], v[i]--;
  v.push_back(SENTINEL + 1);
  v.push_back(SENTINEL + 2);
  rep(i, 3000) rep(j, 3000) dp[i][j] = -(1e18);
  update(v[0], v[1], 0);

  for (ll i = 2; i < 3 * N; i+=3) {
    vector<T> upd;
    // A
    if (v[i] == v[i+1] && v[i+1] == v[i+2]) {
      ans++;
      continue;
    }
    vector<ll> w = {v[i], v[i+1], v[i+2]};
    sort(begin(w),end(w));
    do {
      ll a = w[0], b = w[1], c = w[2];
      // printf("a = %lld b = %lld c = %lld\n", a, b, c);
      // B
      if (a == b) {
        rep(y, N) {
          upd.emplace_back(c, y, dp[a][y]+1);
        }
      }
      // C
      upd.emplace_back(b, c, dp[a][a]+1);
      // D
      ;
      // E
      rep(x, N)
        upd.emplace_back(x, a, dp[x][WILD_CARD]);
      // F
      upd.emplace_back(a, b, dp[WILD_CARD][WILD_CARD]);
    } while (next_permutation(begin(w), end(w)));

    for (auto [x, y, val] : upd) {
      update(x, y, val);
    }
  }

  ans += dp[WILD_CARD][WILD_CARD];
  cout << ans << endl;
}

int main() {
  //ll T;
  //cin >> T;
  //rep(_,T)
    solve();
  return 0;
}

提出情報

提出日時
問題 F - Brave CHAIN
ユーザ bobuhiro11
言語 C++ (GCC 9.2.1)
得点 600
コード長 2135 Byte
結果 AC
実行時間 1171 ms
メモリ 74244 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 600 / 600
結果
AC × 3
AC × 55
セット名 テストケース
Sample sample00, sample01, sample02
All case03, case04, case05, case06, case07, case08, case09, case10, case11, case12, case13, case14, case15, case16, case17, case18, case19, case20, case21, case22, case23, case24, case25, case26, case27, case28, case29, case30, case31, case32, case33, case34, case35, case36, case37, case38, case39, case40, case41, case42, case43, case44, case45, case46, case47, case48, case49, case50, case51, case52, case53, case54, sample00, sample01, sample02
ケース名 結果 実行時間 メモリ
case03 AC 1155 ms 74112 KiB
case04 AC 1163 ms 74080 KiB
case05 AC 1167 ms 74168 KiB
case06 AC 1125 ms 74020 KiB
case07 AC 1125 ms 73980 KiB
case08 AC 1133 ms 74080 KiB
case09 AC 366 ms 73984 KiB
case10 AC 998 ms 74032 KiB
case11 AC 53 ms 73896 KiB
case12 AC 54 ms 73840 KiB
case13 AC 58 ms 73884 KiB
case14 AC 55 ms 73672 KiB
case15 AC 56 ms 73740 KiB
case16 AC 658 ms 73900 KiB
case17 AC 995 ms 74124 KiB
case18 AC 312 ms 74060 KiB
case19 AC 1130 ms 74176 KiB
case20 AC 132 ms 73960 KiB
case21 AC 67 ms 74000 KiB
case22 AC 173 ms 74036 KiB
case23 AC 58 ms 73840 KiB
case24 AC 178 ms 73940 KiB
case25 AC 244 ms 74200 KiB
case26 AC 1127 ms 74072 KiB
case27 AC 1134 ms 74168 KiB
case28 AC 595 ms 74192 KiB
case29 AC 751 ms 74192 KiB
case30 AC 190 ms 73908 KiB
case31 AC 579 ms 73988 KiB
case32 AC 210 ms 73908 KiB
case33 AC 961 ms 74080 KiB
case34 AC 1112 ms 74212 KiB
case35 AC 71 ms 73924 KiB
case36 AC 685 ms 74064 KiB
case37 AC 47 ms 73864 KiB
case38 AC 93 ms 73984 KiB
case39 AC 985 ms 74072 KiB
case40 AC 179 ms 73924 KiB
case41 AC 517 ms 74120 KiB
case42 AC 521 ms 74180 KiB
case43 AC 505 ms 74076 KiB
case44 AC 513 ms 73984 KiB
case45 AC 518 ms 73940 KiB
case46 AC 320 ms 73936 KiB
case47 AC 844 ms 74064 KiB
case48 AC 410 ms 74020 KiB
case49 AC 1171 ms 74064 KiB
case50 AC 612 ms 74144 KiB
case51 AC 634 ms 74244 KiB
case52 AC 613 ms 74044 KiB
case53 AC 66 ms 73980 KiB
case54 AC 77 ms 73864 KiB
sample00 AC 53 ms 73756 KiB
sample01 AC 57 ms 73756 KiB
sample02 AC 58 ms 73896 KiB