2
54 29
这种情况不应该是同时删除 1 ~ 2 吗 , 这样操作价值就是 (54+29)∗(2−1+1)=50 吗?
但是第一篇题解测出来是 83 是咋回事
题解
#include <cstdio>
#include <algorithm>
using namespace std;
int n, val[105], dp[105];
inline int Val(int l, int r) {
return abs(val[l] - val[r]) * (r - l + 1);
}
int main(int argc, char const *argv[])
{
// freopen("nanjolno.in", "r", stdin);
// freopen("nanjolno.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n; ++i) scanf("%d", &val[i]);
for(int i = 1; i <= n; ++i) {
dp[i] = max(dp[i], dp[i - 1] + val[i]);
for(int j = 2; j <= i; ++j)
dp[i] = max(dp[i], dp[i - j] + Val(i - j + 1, i));
}
printf("%d\n", dp[n]);
// fclose(stdin), fclose(stdout);
return 0;
}
2
54 29