Submission #6614876


Source Code Expand

#include<iostream>
#include<algorithm>

using namespace std;
typedef long long ll;

const ll INF = 1145141919810893;

int N;
ll dp[400][400];
ll cost[400];
ll ruisekiwa[401];//idx i ~ idx j (i < j)は [i, j)

int main() {
	cin >> N;
	for (int i = 0; i < N; i++) {
		cin >> cost[i];
		ruisekiwa[i + 1] = cost[i] + ruisekiwa[i];
	}
	for (int i = 0; i < N; i++)for (int j = 0; j < N; j++)dp[i][j] = INF;

	for (int i = 0; i < N; i++)dp[i][i] = 0;

	for (int i = 1; i < N; i++) {
		for (int j = 0; j + i < N; j++) {
			ll ans = INF;
			if (i == 1) {
				dp[j][j + i] = ruisekiwa[j + i + 1] - ruisekiwa[j];
			}
			else {
				for (int k = j; k <= j + i - 1; k++) {
					int ll = j, lr = k, rl = k + 1, rr = j + i;
					ans = min(ans, dp[ll][lr] + dp[rl][rr]);
				}
				ans += ruisekiwa[j + i + 1] - ruisekiwa[j];
				dp[j][j + i] = ans;
			}
		}
	}
	
	cout << dp[0][N - 1] << endl;
	return 0;
}

Submission Info

Submission Time
Task N - Slimes
User Sen
Language C++14 (GCC 5.4.1)
Score 100
Code Size 932 Byte
Status AC
Exec Time 27 ms
Memory 1536 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 16
Set Name Test Cases
All 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11
Case Name Status Exec Time Memory
0_00 AC 1 ms 256 KiB
0_01 AC 1 ms 256 KiB
0_02 AC 1 ms 256 KiB
0_03 AC 1 ms 256 KiB
1_00 AC 1 ms 256 KiB
1_01 AC 27 ms 1536 KiB
1_02 AC 27 ms 1536 KiB
1_03 AC 27 ms 1536 KiB
1_04 AC 27 ms 1536 KiB
1_05 AC 26 ms 1536 KiB
1_06 AC 27 ms 1536 KiB
1_07 AC 26 ms 1536 KiB
1_08 AC 26 ms 1536 KiB
1_09 AC 26 ms 1536 KiB
1_10 AC 25 ms 1536 KiB
1_11 AC 25 ms 1536 KiB