Iamtui1010

slimes

Nov 10th, 2021
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.97 KB | None | 0 0
  1. //#include<bits/stdc++.h>
  2. #include<iostream>
  3. #include<vector>
  4. #include<algorithm>
  5.  
  6. #define long long long
  7. #define nln '\n'
  8.  
  9. const long N = 410, I = 1e18;
  10.  
  11. using namespace std;
  12.  
  13. // Global variables: n, a
  14.  
  15. long n;
  16. vector<long> a;
  17.  
  18. void data()
  19. {
  20.     cin >> n;
  21.     a.resize(n+1, 0);
  22.     for (long i = 1; i <= n; ++i)
  23.         cin >> a[i];
  24. }
  25.  
  26. vector<long> sum;
  27.  
  28. long total(long i, long j)
  29. {
  30.     return sum[j] - sum[i-1];
  31. }
  32.  
  33. void process()
  34. {
  35.     sum.resize(n+1, 0);
  36.     for (long i = 1; i <= n; ++i)
  37.         sum[i] = sum[i-1] + a[i];
  38.     // Dynamic planning
  39.     long dp[N][N];
  40.  
  41.     for (long i = 1; i <= n; ++i) dp[i][i + 1] = a[i] + a[i + 1];
  42.  
  43.     for (long i = 2; i <= n; ++i)
  44.         for (long j = 1; j+i <=n; ++j)
  45.         {
  46.             long lef = j, rig = j+i;
  47.             dp[lef][rig] = I;
  48.             for (long k = lef+1; k <= rig; ++k)
  49.                 dp[lef][rig] = min(dp[lef][rig], dp[lef][k-1]+dp[k][rig]);
  50.             dp[lef][rig] += total(lef, rig);
  51.         }
  52.     cout << dp[1][n] << nln;
  53. }
  54.  
  55. int main()
  56. {
  57.     data();
  58.     process();
  59.     return 0;
  60. }
  61.  
Advertisement
Add Comment
Please, Sign In to add comment