码迷,mamicode.com
首页 > 其他好文 > 详细

【BZOJ3892】【Usaco2014 Dec】Marathon (Silver and Bronze) 暴力动规

时间:2015-02-27 18:25:22      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:bzoj3892   usaco2014   marathon   动态规划   

广告

#include <stdio.h>
int main()
{
    puts("转载请注明出处[vmurder]谢谢");
    puts("网址:blog.csdn.net/vmurder/article/details/43970671");
}

题解

——Silver

f[i][j]表示到第i个跳过了j个的最小值
然后暴力从前转移。
它的时间复杂度是1.25亿,但是常数远远远远小于1

——Bronze

跟银组的一样,只不过改改数组大小,然后m直接赋值1就好了。

银组代码:

#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 505
#define INF 0x3f3f3f3f3f3f3f3fll
using namespace std;
long long n,m;
long long f[N][N],x[N],y[N];
int main()
{
    freopen("test.in","r",stdin);
    cin>>n>>m;
    int i,j,k;
    for(i=1;i<=n;i++)cin>>x[i]>>y[i];
    memset(f,0x3f,sizeof f);
    f[1][0]=0;
    for(i=2;i<=n;i++)
    {
        for(j=0;j<i-1&&j<=m;j++)
        {
            for(k=i-1;i-k-1<=j&&k;k--)
            {
                f[i][j]=min(f[i][j],f[k][j-(i-k-1)]+abs(x[i]-x[k])+abs(y[i]-y[k]));
            }
        }
    }
    long long ans=INF;
    for(i=0;i<=m;i++)ans=min(ans,f[n][m]);
        cout<<ans<<endl;
    return 0;
}

【BZOJ3892】【Usaco2014 Dec】Marathon (Silver and Bronze) 暴力动规

标签:bzoj3892   usaco2014   marathon   动态规划   

原文地址:http://blog.csdn.net/vmurder/article/details/43970671

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!