P2426 40分求调(悬关)
查看原帖
P2426 40分求调(悬关)
753646
LCX_201109091514楼主2024/7/12 11:20
#include<bits/stdc++.h>
using namespace std;
int dp[2001][2001];
int a[2001];
int f[2001][2001];
int dfs(int l,int r){
	if (l >= r){
		return 0;
	} 
	  if (f[l][r]) return f[l][r];
	int sum = -1;
	for (int i = 1;i <= r-l+1;i++){
		if (i == 1) sum = max(sum,max((l+i,r)+a[l],dfs(l,r-i)+a[r]));
		else sum = max(sum,max(dfs(l+i,r)+abs(a[l]-a[l+i-1])*i,dfs(l,r-i)+abs(a[r]-a[r-i+1])*i));
	}
	return f[l][r] = sum;
}
int main(){
	int n;
	cin>>n;
	for (int i = 1;i <= n;i++){
		cin>>a[i];
	}
	cout<<dfs(1,n);
	return 0;
}

 
2024/7/12 11:20
加载中...