Submission #64558255


Source Code Expand

#line 2 "Library/src/debug.hpp"

#ifdef ONLINE_JUDGE
#define debug(x) void(0)
#else
#define _GLIBCXX_DEBUG
#include <iostream>
#define debug(x) \
    std::cerr << __LINE__ << " : " << #x << " = " << (x) << std::endl
#endif

/**
 * @brief Debugger
 */
#line 2 "Library/src/stream.hpp"
#include <ctype.h>
#include <stdio.h>
#include <string>
#line 2 "Library/src/internal/type_traits.hpp"
#include <iostream>
#include <limits>
#include <numeric>
#include <typeinfo>
#include <cstdint>

namespace kyopro {
namespace internal {
template <typename... Args> struct first_enabled {};

template <typename T, typename... Args>
struct first_enabled<std::enable_if<true, T>, Args...> {
    using type = T;
};
template <typename T, typename... Args>
struct first_enabled<std::enable_if<false, T>, Args...>
    : first_enabled<Args...> {};
template <typename T, typename... Args> struct first_enabled<T, Args...> {
    using type = T;
};

template <typename... Args>
using first_enabled_t = typename first_enabled<Args...>::type;

template <int dgt, std::enable_if_t<dgt <= 128>* = nullptr> struct int_least {
    using type = first_enabled_t<std::enable_if<dgt <= 8, std::int8_t>,
                                 std::enable_if<dgt <= 16, std::int16_t>,
                                 std::enable_if<dgt <= 32, std::int32_t>,
                                 std::enable_if<dgt <= 64, std::int64_t>,
                                 std::enable_if<dgt <= 128, __int128_t>>;
};

template <int dgt, std::enable_if_t<dgt <= 128>* = nullptr> struct uint_least {
    using type = first_enabled_t<std::enable_if<dgt <= 8, std::uint8_t>,
                                 std::enable_if<dgt <= 16, std::uint16_t>,
                                 std::enable_if<dgt <= 32, std::uint32_t>,
                                 std::enable_if<dgt <= 64, std::uint64_t>,
                                 std::enable_if<dgt <= 128, __uint128_t>>;
};

template <int dgt> using int_least_t = typename int_least<dgt>::type;
template <int dgt> using uint_least_t = typename uint_least<dgt>::type;

template <typename T>
using double_size_uint_t = uint_least_t<2 * std::numeric_limits<T>::digits>;

template <typename T>
using double_size_int_t = int_least_t<2 * std::numeric_limits<T>::digits>;

struct modint_base {};
template <typename T> using is_modint = std::is_base_of<modint_base, T>;
template <typename T> using is_modint_t = std::enable_if_t<is_modint<T>::value>;


// is_integral
template <typename T>
using is_integral_t =
    std::enable_if_t<std::is_integral_v<T> || std::is_same_v<T, __int128_t> ||
                   std::is_same_v<T, __uint128_t>>;
};  // namespace internal
};  // namespace kyopro

/**
 * @brief Type Traits
 * @see https://qiita.com/kazatsuyu/items/f8c3b304e7f8b35263d8
 */
#line 6 "Library/src/stream.hpp"

namespace kyopro {

inline void single_read(char& c) {
    c = getchar_unlocked();
    while (isspace(c)) c = getchar_unlocked();
}
template <typename T, internal::is_integral_t<T>* = nullptr>
inline void single_read(T& a) {
    a = 0;
    bool is_negative = false;
    char c = getchar_unlocked();
    while (isspace(c)) {
        c = getchar_unlocked();
    }
    if (c == '-') is_negative = true, c = getchar_unlocked();
    while (isdigit(c)) {
        a = 10 * a + (c - '0');
        c = getchar_unlocked();
    }
    if (is_negative) a *= -1;
}
template <typename T, internal::is_modint_t<T>* = nullptr>
inline void single_read(T& a) {
    long long x;
    single_read(x);
    a = T(x);
}
inline void single_read(std::string& str) noexcept {
    char c = getchar_unlocked();
    while (isspace(c)) c = getchar_unlocked();
    while (!isspace(c)) {
        str += c;
        c = getchar_unlocked();
    }
}
template<typename T>
inline void read(T& x) noexcept {single_read(x);}
template <typename Head, typename... Tail>
inline void read(Head& head, Tail&... tail) noexcept {
    single_read(head), read(tail...);
}

inline void single_write(char c) noexcept { putchar_unlocked(c); }
template <typename T, internal::is_integral_t<T>* = nullptr>
inline void single_write(T a) noexcept {
    if (!a) {
        putchar_unlocked('0');
        return;
    }
    if constexpr (std::is_signed_v<T>) {
        if (a < 0) putchar_unlocked('-'), a *= -1;
    }
    constexpr int d = std::numeric_limits<T>::digits10;
    char s[d + 1];
    int now = d + 1;
    while (a) {
        s[--now] = (char)'0' + a % 10;
        a /= 10;
    }
    while (now <= d) putchar_unlocked(s[now++]);
}
template <typename T, internal::is_modint_t<T>* = nullptr>
inline void single_write(T a) noexcept {
    single_write(a.val());
}
inline void single_write(const std::string& str) noexcept {
    for (auto c : str) {
        putchar_unlocked(c);
    }
}
template <typename T> inline void write(T x) noexcept { single_write(x); }
template <typename Head, typename... Tail>
inline void write(Head head, Tail... tail) noexcept {
    single_write(head);
    putchar_unlocked(' ');
    write(tail...);
}
template <typename... Args> inline void put(Args... x) noexcept {
    write(x...);
    putchar_unlocked('\n');
}
};  // namespace kyopro

/**
 * @brief Fast IO(高速入出力)
 */
#line 2 "Library/src/template.hpp"
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); i++)
#define all(x) std::begin(x), std::end(x)
#define popcount(x) __builtin_popcountll(x)
using i128 = __int128_t;
using ll = long long;
using ld = long double;
using graph = std::vector<std::vector<int>>;
using P = std::pair<int, int>;
constexpr int inf = std::numeric_limits<int>::max() / 2;
constexpr ll infl = std::numeric_limits<ll>::max() / 2;
const long double pi = acosl(-1);
constexpr int dx[] = {1, 0, -1, 0, 1, -1, -1, 1, 0};
constexpr int dy[] = {0, 1, 0, -1, 1, 1, -1, -1, 0};
template <typename T1, typename T2> constexpr inline bool chmax(T1& a, T2 b) {
    return a < b && (a = b, true);
}
template <typename T1, typename T2> constexpr inline bool chmin(T1& a, T2 b) {
    return a > b && (a = b, true);
}

/**
 * @brief Template
*/
#line 4 "a.cpp"

using namespace std;
using namespace kyopro;

#define ll i128

int main() {
    int n;
    read(n);

    vector<ll> a(n), x(n);
    rep(i, n) read(a[i]), --a[i];
    rep(i, n) read(x[i]);

    rep(i, n) a.emplace_back(a[i]);

    /*
    vector<vector<int>> idx(n);
    rep(i, n) idx[a[i]].emplace_back(i);
    rep(i, n) idx[a[i]].emplace_back(i + n);
    */

    vector dp(2 * n + 2, vector(2 * n + 2, infl));

    auto f = [&](const auto& f, int l, int r) -> ll {
        if (l >= r) return 0;

        if (dp[l][r] != infl) return dp[l][r];

        if (r - l == 1) return dp[l][r] = x[a[l]] + 1;

        for (int m = l + 1; m < r; ++m) {
            chmin(dp[l][r], f(f, l, m) + f(f, m, r));
        }

        if (a[l] == a[r - 1]) {
            chmin(dp[l][r], x[a[l]] + r - l + f(f, l + 1, r - 1));

            ll cost = x[a[l]] + r - l;

            int pre = l;

            for (int i = l + 1; i < r; ++i) {
                if (a[i] == a[pre]) {
                    cost += f(f, pre + 1, i);
                    pre = i;

                    /*
                    for (int j = i + 1; j < r; ++j) {
                        if (a[i] == a[j]) {
                            chmin(dp[l][r], x[a[l]] + r - l + f(f, l + 1, i) +
                                                f(f, i + 1, j) +
                                                f(f, j + 1, r - 1));
                        }
                    }
                    */
                }
            }

            chmin(dp[l][r], cost);
        }

        return dp[l][r];
    };

    ll ans = infl;
    rep(i, n) chmin(ans, f(f, i, i + n));
    put(ans);
}

Submission Info

Submission Time
Task F - Happy Birthday! 3
User AC2K
Language C++ 20 (gcc 12.2)
Score 0
Code Size 7937 Byte
Status WA
Exec Time 332 ms
Memory 8204 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 550
Status
AC × 3
AC × 36
WA × 9
Set Name Test Cases
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
Case Name Status Exec Time Memory
sample00.txt AC 1 ms 3460 KiB
sample01.txt AC 1 ms 3488 KiB
sample02.txt AC 1 ms 3504 KiB
testcase00.txt AC 289 ms 8200 KiB
testcase01.txt AC 288 ms 8200 KiB
testcase02.txt AC 287 ms 8116 KiB
testcase03.txt AC 230 ms 8116 KiB
testcase04.txt AC 230 ms 8048 KiB
testcase05.txt AC 230 ms 8092 KiB
testcase06.txt AC 162 ms 6264 KiB
testcase07.txt AC 330 ms 8124 KiB
testcase08.txt AC 97 ms 5460 KiB
testcase09.txt AC 332 ms 8048 KiB
testcase10.txt AC 80 ms 5548 KiB
testcase11.txt AC 332 ms 8088 KiB
testcase12.txt AC 7 ms 3904 KiB
testcase13.txt AC 288 ms 8036 KiB
testcase14.txt AC 65 ms 5412 KiB
testcase15.txt AC 289 ms 8116 KiB
testcase16.txt AC 130 ms 5976 KiB
testcase17.txt AC 289 ms 8084 KiB
testcase18.txt WA 11 ms 4096 KiB
testcase19.txt AC 271 ms 8044 KiB
testcase20.txt AC 5 ms 3832 KiB
testcase21.txt WA 268 ms 8152 KiB
testcase22.txt WA 153 ms 6492 KiB
testcase23.txt WA 272 ms 8100 KiB
testcase24.txt WA 45 ms 5044 KiB
testcase25.txt WA 260 ms 8068 KiB
testcase26.txt WA 68 ms 5652 KiB
testcase27.txt WA 262 ms 8124 KiB
testcase28.txt AC 9 ms 3968 KiB
testcase29.txt WA 261 ms 8128 KiB
testcase30.txt AC 7 ms 3924 KiB
testcase31.txt AC 231 ms 8124 KiB
testcase32.txt AC 104 ms 6036 KiB
testcase33.txt AC 231 ms 8204 KiB
testcase34.txt AC 2 ms 3796 KiB
testcase35.txt AC 230 ms 8128 KiB
testcase36.txt AC 51 ms 5488 KiB
testcase37.txt AC 232 ms 8084 KiB
testcase38.txt AC 96 ms 6012 KiB
testcase39.txt AC 231 ms 8088 KiB
testcase40.txt AC 36 ms 4972 KiB
testcase41.txt AC 231 ms 8204 KiB