Advertisement
tuki2501

atcoder_dp_n.cpp

Nov 10th, 2021
653
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.65 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long ll;
  5.  
  6. const int N = 405;
  7.  
  8. int a[N];
  9. ll sum[N], dp[N][N];
  10.  
  11. template<typename T>
  12. bool chmin(T &a, T b) {
  13.   return a > b ? a = b, 1 : 0;
  14. }
  15.  
  16. int main() {
  17.   cin.tie(0)->sync_with_stdio(0);
  18.   int n; cin >> n;
  19.   memset(dp, 0x3f, sizeof(dp));
  20.   for (int i = 1; i <= n; i++) {
  21.     cin >> a[i];
  22.     sum[i] = sum[i - 1] + a[i];
  23.     dp[i][i] = 0;
  24.   }
  25.   for (int i = n; i >= 1; i--) {
  26.     for (int j = i + 1; j <= n; j++) {
  27.       for (int k = i; k < j; k++) {
  28.         chmin(dp[i][j], dp[i][k] + dp[k + 1][j] + sum[j] - sum[i - 1]);
  29.       }
  30.     }
  31.   }
  32.   cout << dp[1][n] << '\n';
  33. }
  34.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement