比赛 csp2025模拟练习3 评测结果 AAAAAAAAA
题目名称 Symmetric Mountains 最终得分 100
用户昵称 wdsjl 运行时间 0.716 s
代码语言 C++ 内存使用 54.86 MiB
提交时间 2025-10-30 09:47:07
显示代码纯文本
#include <bits/stdc++.h>
#define int long long
using namespace std;

const int inf = 1e18;
const int N = 5010;

int ans[N],h[N],dp[N][N],n;

signed main(){
	freopen("Mountains.in","r",stdin);
	freopen("Mountains.out","w",stdout); 
	scanf("%lld",&n);
	for(int i=1;i<=n;i++){
		scanf("%lld",&h[i]);
		ans[i]=inf;
	}
	for(int len=1;len<=n;len++){
		for(int l=1;l+len-1<=n;l++){
			int r=l+len-1;
			if(len==1){
				dp[l][r]=0;
			}else if(len==2){
				dp[l][r]=llabs(h[r]-h[l]);
			}else {
				dp[l][r]=dp[l+1][r-1]+llabs(h[r]-h[l]);
			}
			ans[len]=min(ans[len],dp[l][r]);
		}
		printf("%lld ",ans[len]);
	}
	return 0;
}