fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define int long long
  5. #define nn "\n"
  6.  
  7. const long long INF = 4e18;
  8. const int N = 1505;
  9.  
  10. int n;
  11. int a[N];
  12. long long dp[N][N];
  13.  
  14. signed main() {
  15. ios::sync_with_stdio(0);
  16. cin.tie(0);
  17.  
  18. cin >> n;
  19. for(int i = 1; i <= n - 1; i++){
  20. cin >> a[i];
  21. }
  22.  
  23. for(int i = 0; i <= n; i++){
  24. for(int j = 0; j <= n; j++){
  25. dp[i][j] = INF;
  26. }
  27. }
  28.  
  29. dp[0][1] = 0;
  30.  
  31. long long ans = INF;
  32.  
  33. for(int i = 0; i <= n - 1; i++){
  34. for(int j = 1; j <= n; j++){
  35. if(dp[i][j] == INF) continue;
  36.  
  37. if(i + j >= n){
  38. ans = min(ans, dp[i][j]);
  39. }
  40.  
  41. for(int k = i + 1; k <= min((long long)n - 1, i + j); k++){
  42.  
  43. // vào sưởi
  44. dp[k][j] = min(dp[k][j], dp[i][j] + 1);
  45.  
  46. // mua áo
  47. dp[k][j + 1] = min(dp[k][j + 1],
  48. dp[i][j] + a[k]);
  49. }
  50. }
  51. }
  52.  
  53. cout << ans << nn;
  54. return 0;
  55. }
Success #stdin #stdout 0.01s 5300KB
stdin
10
6 4 2 7 1 8 3 9 5
stdout
6