第二题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; }
点赞 1

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务