| 比赛 |
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;
}