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 |
|
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 |