@[liwenxi110720](/user/661913) 去找这个 [天才](https://www.luogu.com.cn/user/1027991)
by linjianju_xi @ 2024-01-29 16:05:02
@[liwenxi110720](/user/661913) 文中“,如果只去掉一个数,操作价值为这个数的值。 问如何操作可以得到最大值,求操作的最大价值。”我建议你吧算贡献的地方写成一个含数,特判一下 i==j 的时候,还有有可能全删了分段前要 dp[i][j]=sz(i,j);我的代码你参考一下
```cpp
#include<bits/stdc++.h>
using namespace std;
const int N=1e2+5;
int a[N],f[N][N],n;
int sz(int i,int j)
{
if(i==j) return a[i];
return abs(a[j]-a[i])*(j-i+1);
}
int main(){
memset(f,0xcf,sizeof(f));
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i],f[i][i]=a[i];
for(int len=2;len<=n;len++)
{
for(int i=1;i+len-1<=n;i++)
{
int j=i+len-1;
f[i][j]=sz(i,j);
for(int k=i;k<j;k++)
{
f[i][j]=max(f[i][j],max(f[i][k]+sz(k+1,j),f[k+1][j]+sz(i,k)));
}
}
}
cout<<f[1][n];
return 0;
}
```
by sto_0616allen_orz @ 2024-03-17 13:24:10