Submission #3889542


Source Code Expand

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

typedef long long int ll;
typedef pair<ll, ll> pll;

#define FOR(i, n, m) for (ll(i) = (m); (i) < (n); ++(i))
#define REP(i, n) FOR(i, n, 0)
#define OF64 std::setprecision(10)

const ll MOD = 1000000007;
const ll INF = (ll)1e15;

ll C[5005];
//! i-jで構成されるsubstructが回文か
bool L[5005][5005];
bool U[5005][5005];
//! [i番目までの文字を使った時の]=costの最小値
ll dp[5005];

int N;
string S;

//! i-jで構成されるsubstructが回文か
bool check(int i, int j)
{
    if (U[i][j])
        return L[i][j];
    U[i][j] = true;
    if (i > j)
        return L[i][j] = true;
    if (i == j)
        return L[i][j] = true;
    if (S[i] != S[j])
        return L[i][j] = false;
    return L[i][j] = check(i + 1, j - 1);
}

int main()
{
    cin >> N >> S;
    REP(i, N)
    {
        cin >> C[i];
    }
    REP(i, N)
    {
        FOR(j, N, i)
        {
            check(i, j);
        }
    }
    dp[0] = 0;
    FOR(i, N + 1, 1)
    {
        dp[i] = dp[i - 1] + C[0];
        for (int j = i - 1; j >= 1; --j)
        {
            if (L[j - 1][i - 1])
                dp[i] = std::min(dp[i], dp[j - 1] + C[i - j]);
        }
    }
    cout << dp[N] << endl;
    return 0;
}

Submission Info

Submission Time
Task C - Palindrome Concatenation
User coco18000
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1315 Byte
Status AC
Exec Time 268 ms
Memory 49024 KB

Judge Result

Set Name Sample Dataset1 Dataset2
Score / Max Score 0 / 0 40 / 40 60 / 60
Status
AC × 3
AC × 24
AC × 48
Set Name Test Cases
Sample sample-01.txt, sample-02.txt, sample-03.txt
Dataset1 sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt
Dataset2 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt, 02-21.txt, 02-22.txt, 02-23.txt, 02-24.txt, sample-01.txt, sample-02.txt, sample-03.txt
Case Name Status Exec Time Memory
01-01.txt AC 2 ms 2304 KB
01-02.txt AC 2 ms 2304 KB
01-03.txt AC 3 ms 4736 KB
01-04.txt AC 3 ms 5248 KB
01-05.txt AC 3 ms 5248 KB
01-06.txt AC 3 ms 5248 KB
01-07.txt AC 3 ms 5248 KB
01-08.txt AC 3 ms 5248 KB
01-09.txt AC 3 ms 5248 KB
01-10.txt AC 3 ms 5248 KB
01-11.txt AC 3 ms 5248 KB
01-12.txt AC 3 ms 5248 KB
01-13.txt AC 3 ms 5248 KB
01-14.txt AC 3 ms 5248 KB
01-15.txt AC 3 ms 5248 KB
01-16.txt AC 3 ms 5248 KB
01-17.txt AC 3 ms 5248 KB
01-18.txt AC 3 ms 5248 KB
01-19.txt AC 3 ms 5248 KB
01-20.txt AC 3 ms 5248 KB
01-21.txt AC 3 ms 5248 KB
02-01.txt AC 9 ms 14592 KB
02-02.txt AC 22 ms 22784 KB
02-03.txt AC 41 ms 30976 KB
02-04.txt AC 114 ms 48896 KB
02-05.txt AC 268 ms 49024 KB
02-06.txt AC 155 ms 48896 KB
02-07.txt AC 133 ms 48896 KB
02-08.txt AC 260 ms 49024 KB
02-09.txt AC 116 ms 49024 KB
02-10.txt AC 116 ms 49024 KB
02-11.txt AC 114 ms 48896 KB
02-12.txt AC 124 ms 48896 KB
02-13.txt AC 112 ms 48896 KB
02-14.txt AC 114 ms 48896 KB
02-15.txt AC 115 ms 48896 KB
02-16.txt AC 162 ms 48896 KB
02-17.txt AC 163 ms 48896 KB
02-18.txt AC 167 ms 48896 KB
02-19.txt AC 163 ms 48896 KB
02-20.txt AC 163 ms 48896 KB
02-21.txt AC 113 ms 48896 KB
02-22.txt AC 121 ms 48896 KB
02-23.txt AC 199 ms 49024 KB
02-24.txt AC 193 ms 49024 KB
sample-01.txt AC 2 ms 2304 KB
sample-02.txt AC 2 ms 2304 KB
sample-03.txt AC 2 ms 2304 KB