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

BZOJ 3892 Usaco2014 Dec Marathon DP

时间:2015-02-27 21:42:15      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:bzoj   usaco   dp   

题目大意:给出平面上的一些点,要求按顺序遍历,费用是两点之间的曼哈顿距离,可以跳过k次,问最少需要花费多少。


思路:O(n^3)dp就行了。


CODE:

#define _CRT_SECURE_NO_WARNINGS

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define MAX 510
using namespace std;

struct Point{
	int x,y;

	void Read() {
		scanf("%d%d",&x,&y);
	}
}point[MAX];

int cnt,t;
int f[MAX][MAX];

inline int Calc(const Point &p1,const Point &p2)
{
	return abs(p1.x - p2.x) + abs(p1.y - p2.y);
}

int main()
{
	cin >> cnt >> t;
	for(int i = 1; i <= cnt; ++i)
		point[i].Read();
	memset(f,0x3f,sizeof(f));
	f[1][t] = 0;
	for(int i = 2; i <= cnt; ++i)
		for(int j = 1; j < i; ++j)
			for(int k = t; k >= i - j - 1; --k)
				f[i][k - (i - j - 1)] = min(f[i][k - (i - j - 1)],f[j][k] + Calc(point[i],point[j]));
	cout << f[cnt][0] << endl;
	return 0;
}


BZOJ 3892 Usaco2014 Dec Marathon DP

标签:bzoj   usaco   dp   

原文地址:http://blog.csdn.net/jiangyuze831/article/details/43970821

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