Codeforces Round #371 (Div. 2) E

来源:互联网 发布:pca算法matlab代码 编辑:程序博客网 时间:2024/05/20 23:58

E

题目地址:http://codeforces.com/contest/714/problem/E

思路:基本就是原题的另一题地址:http://codeforces.com/contest/13/problem/C,多加一个 -i 的处理。

AC代码:

#include<bits/stdc++.h>using namespace std;const int maxn=3000+15;int a[maxn],b[maxn];long long dp[maxn][maxn];int n;int main(){ while(~scanf("%d",&n)) {     memset(a,0,sizeof(a));     memset(b,0,sizeof(b));     memset(dp,0,sizeof(dp));     for(int i=1;i<=n;i++)     {         int temp;         scanf("%d",&temp);         a[i]=b[i]=temp-i;     }     sort(b+1,b+1+n);     for(int i=1;i<=n;i++)     {         dp[i][1]=dp[i-1][1]+(long long)abs(a[i]-b[1]);         for(int j=2;j<=n;j++)            dp[i][j]=min(dp[i][j-1],dp[i-1][j]+(long long)abs(a[i]-b[j]));     }     printf("%I64d\n",dp[n][n]); }}


0 0
原创粉丝点击