提出 #64571967


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;
#define i64 int64_t

void solve() {
  i64 N;
  cin >> N;
  vector<i64> C(N), X(N);
  for (auto& c : C) {
    cin >> c;
    c--;
  }
  for (auto& x : X) {
    cin >> x;
  }

  // Double C
  for (int i = 0; i < N; i++) {
    C.push_back(C[i]);
  }
  N *= 2;

  const i64 inf = 1e18;
  vector dp(N, vector<i64>(N, inf));
  vector<vector<int>> occ(N);
  for (int i = 0; i < N; i++) {
    // Consider doing nothing
    for (int j = 0; j <= i; j++) {
      i64 cost_left = (j == i ? 0 : dp[j][i - 1]);
      dp[j][i] = cost_left + 1 + X[C[i]];
    }
    // Consider all previous occurrences to merge
    for (int i_prv : occ[C[i]]) {
      for (int j = 0; j <= i_prv; j++) {
        i64 cost_left = dp[j][i_prv];
        i64 cost_mid = (i == i_prv + 1 ? 0 : dp[i_prv + 1][i - 1]);
        dp[j][i] = min(dp[j][i], cost_left + (i - i_prv) + cost_mid);
      }
    }
    occ[C[i]].push_back(i);
  }

  // Find best answer (length-N subarray, corresponds to cyclic rotation of C)
  i64 ans = inf;
  for (int i = 0; i < N / 2; i++) {
    ans = min(ans, dp[i][i + N / 2 - 1]);
  }
  cout << ans << '\n';
}

int main() {
  std::ios::sync_with_stdio(0), std::cin.tie(0);
  solve();
  return 0;
}

提出情報

提出日時
問題 F - Happy Birthday! 3
ユーザ cowmane
言語 C++ 23 (gcc 12.2)
得点 550
コード長 1284 Byte
結果 AC
実行時間 151 ms
メモリ 8660 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 550 / 550
結果
AC × 3
AC × 45
セット名 テストケース
Sample sample00.txt, sample01.txt, sample02.txt
All sample00.txt, sample01.txt, sample02.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt, testcase33.txt, testcase34.txt, testcase35.txt, testcase36.txt, testcase37.txt, testcase38.txt, testcase39.txt, testcase40.txt, testcase41.txt
ケース名 結果 実行時間 メモリ
sample00.txt AC 1 ms 3412 KiB
sample01.txt AC 1 ms 3396 KiB
sample02.txt AC 1 ms 3444 KiB
testcase00.txt AC 85 ms 7992 KiB
testcase01.txt AC 85 ms 8048 KiB
testcase02.txt AC 85 ms 8056 KiB
testcase03.txt AC 3 ms 8480 KiB
testcase04.txt AC 3 ms 8516 KiB
testcase05.txt AC 3 ms 8468 KiB
testcase06.txt AC 68 ms 6204 KiB
testcase07.txt AC 149 ms 8008 KiB
testcase08.txt AC 38 ms 5476 KiB
testcase09.txt AC 151 ms 8128 KiB
testcase10.txt AC 31 ms 5164 KiB
testcase11.txt AC 150 ms 7976 KiB
testcase12.txt AC 2 ms 3872 KiB
testcase13.txt AC 83 ms 7988 KiB
testcase14.txt AC 17 ms 4880 KiB
testcase15.txt AC 82 ms 8060 KiB
testcase16.txt AC 32 ms 5856 KiB
testcase17.txt AC 82 ms 8052 KiB
testcase18.txt AC 2 ms 4048 KiB
testcase19.txt AC 59 ms 7992 KiB
testcase20.txt AC 1 ms 3804 KiB
testcase21.txt AC 58 ms 8060 KiB
testcase22.txt AC 30 ms 6476 KiB
testcase23.txt AC 58 ms 8012 KiB
testcase24.txt AC 6 ms 4704 KiB
testcase25.txt AC 45 ms 8008 KiB
testcase26.txt AC 10 ms 5408 KiB
testcase27.txt AC 46 ms 7992 KiB
testcase28.txt AC 2 ms 3884 KiB
testcase29.txt AC 46 ms 7992 KiB
testcase30.txt AC 1 ms 3848 KiB
testcase31.txt AC 4 ms 8472 KiB
testcase32.txt AC 3 ms 5864 KiB
testcase33.txt AC 4 ms 8368 KiB
testcase34.txt AC 1 ms 3600 KiB
testcase35.txt AC 4 ms 7912 KiB
testcase36.txt AC 2 ms 5296 KiB
testcase37.txt AC 4 ms 7996 KiB
testcase38.txt AC 3 ms 6212 KiB
testcase39.txt AC 4 ms 8484 KiB
testcase40.txt AC 3 ms 4896 KiB
testcase41.txt AC 4 ms 8660 KiB