比赛 csp2025模拟练习3 评测结果 AAAAAAAAA
题目名称 Symmetric Mountains 最终得分 100
用户昵称 54lku 运行时间 1.074 s
代码语言 C++ 内存使用 54.60 MiB
提交时间 2025-10-30 09:05:10
显示代码纯文本
#include<iostream>
using namespace std;
long long dp[5001][5001],h[5001];
int main()
{
	freopen("Mountains.in","r",stdin);
	freopen("Mountains.out","w",stdout);
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>h[i];
	for(int i=1;i<n;i++)//枚举长度,0,1预处理为0 
	{
		for(int j=1;j+i<=n;j++)//begin
		{
			dp[j][j+i]=dp[j+1][j+i-1]+abs(h[j]-h[j+i]);
			//cout<<j<<" "<<j+i<<":"<<dp[j][j+i]<<"\n";
		}
	}
	for(int i=0;i<n;i++)
	{
		long long minn=(long long)1e9;
		for(int j=1;j+i<=n;j++)
		{
			//cout<<dp[j][j+i]<<" ";
			minn=min(minn,dp[j][j+i]);
		}
		//cout<<'\n';	
		cout<<minn<<" ";
	}
}
/*
dp[i][j]=dp[i+1][j-1]+abs(h[i]-h[j]) 
*/