题目
题目原文请移步下面的链接
OI
、动态规划
、区间DP
表达的是卖掉区间i~j所得到的价值,大概就转移方程的具体意义解释一下
和
转移过来的,这个很好想到,老套路了
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <queue>
#include <ctime>
#include <cassert>
#include <complex>
#include <string>
#include <cstring>
#include <chrono>
#include <random>
#include <bitset>
#include <array>
using namespace std;
#define endl '\n';
void best_coder() {
int n;
cin >> n;
vector<int> a(n + 1);
vector<vector<int>> dp(n + 2, vector<int>(n + 1));
for (int i = 1; i <= n; ++i) {
cin >> a[i];
a[i] += a[i - 1];
}
for (int i = n; i >= 1; --i) {
for (int j = i; j <= n; ++j) {
dp[i][j] = max(dp[i][j - 1], dp[i + 1][j]) + a[j] - a[i - 1];
}
}
cout << dp[1][n];
}
void happy_coder() {
}
int main() {
// 提升cin、cout效率
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
// 小码匠
best_coder();
// 最优解
// happy_coder();
// 返回
return 0;
}