有个样例搞不明白
  • 板块P2426 删数
  • 楼主CQ_Alice
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/3 16:59
  • 上次更新2023/11/2 16:06:09
查看原帖
有个样例搞不明白
816310
CQ_Alice楼主2023/10/3 16:59
2
54 29

这种情况不应该是同时删除 11 ~ 22 吗 , 这样操作价值就是 (54+29)∗(2−1+1)=50( 54 + 29 ) * ( 2 - 1 + 1 ) = 50 吗?

但是第一篇题解测出来是 8383 是咋回事

题解

#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
2023/10/3 16:59
加载中...