第二题DP AC int main(){ int l; long long sum = 0; cin >> l; vector<int> n(l); for (int i = 0; i < l; i++){ cin >> n[i]; sum += n[i]; } vector<int> rn = n; reverse(rn.begin(), rn.end()); vector<long long> tmp(l + 1, 0); vector<vector<long long>>res(2, tmp); for (int i = 1; i <= l; i++){ for (int j = 1; j <= l; j++){ if (rn[i - 1] == n[j - 1]) res[1][j] = max(res[0][j - 1] + rn[i - 1], res[1][j - 1]); else res[1][j] = max(res[1][j - 1], res[0][j]); } res[0] = res[1]; res[1] = tmp; } cout << 2 * sum - res[0][l] << endl; return 0; }