Advertisement
NikolayChukanov

memo

Nov 8th, 2022 (edited)
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.86 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. const int64_t INF = 1e18;
  6.  
  7. vector<int64_t> r;
  8. vector<int64_t> c;
  9. vector<vector<int64_t>> memo;
  10.  
  11. int64_t solve(int i, int j){
  12.     if (memo[i][j] < INF){
  13.         return memo[i][j];
  14.     }
  15.     int64_t res = INF;
  16.     for (int k = i; k <= j; ++k){
  17.         int64_t matr_l = solve(i, k);
  18.         int64_t matr_r = solve(k+1, j);
  19.         res = min(res, matr_l + matr_r + r[i] * c[k] * c[j]);
  20.     }
  21.     memo[i][j] = res;
  22.     return memo[i][j];
  23. }
  24.  
  25. int main(){
  26.     ios::sync_with_stdio(false);
  27.     cin.tie(0);
  28.  
  29.     int n;
  30.     cin >> n;
  31.     r.resize(n);
  32.     c.resize(n);
  33.     for(int i = 0; i < n; ++i){
  34.         cin >> r[i] >> c[i];
  35.     }
  36.  
  37.     memo.resize(n, vector<int64_t>(n, INF));
  38.     for (int i = 0; i < n; ++i){
  39.         memo[i][i] = 0;
  40.     }
  41.     int64_t ans = solve(0, n-1);
  42.     cout << ans << endl;
  43. }
  44.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement