B Non-decreasing Array
我们可以知道两个操作都是一样的
那我们直接记dp[i][j]为前i个数选了j个数 并且以ai为结尾的max
状态转移直接枚举 dp[k][j-1]+(a[i]-a[k])^2 即可
ai范围有负数 所以我们初始化dp数组为负无穷 dp[1][1]为0即可
void solve() {
int n;cin>>n;
vector<int>a(n+1);
for(int i=1;i<=n;i++)cin>>a[i];
memset(dp,-127,sizeof dp);
dp[1][1]=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
for(int k=0;k<i;k++)
dp[i][j]=max(dp[i][j],dp[k][j-1]+(a[i]-a[k])*(a[i]-a[k]));
for(int i=1;i<=n;i++)cout<<dp[n][max(2ll,n-2*i)]<<endl;
}
标签:Contest,int,Asia,ICPC,ai,Online,dp
From: https://www.cnblogs.com/ycllz/p/16732717.html