100道动态规划——1 UVA 1347 Tour 算法导论书后习题 双调巡游

                 这道题目实际上是算法导论动态规划那一章的一个书后习题,那个习题是说TSP是一个NP难问题,但是加上一个限制的话就可以利用动态规划把这个问题在多项式内解出来,也就是这道题目了。

                 限制了旅行的方式,让这个人向左一直走到底,然后一直向右走,这就不是随便的走了。

                这是紫书上的一个练习题,在当初没有看紫书的时候,直接对算法导论想了许久没有想出来,但是看了紫书之后感觉紫书的思路挺好的,自己以前从来没有这么想过。

                也做了一些DP的题目了,现在回想起来,还真的按照最优子结构来的,除了那些递推的题目。找到可以定义最优子结构的恰当的状态,然后开始递推或者刷表。

                不过能不能选取恰当的状态还是要看经验了,不过我总认为这里面应该存在着什么方法。

                这里采用的是刷表法,题目没有给出数据范围,dp的2000范围随便猜的。。。。

#include<cstdio>
#include<vector>
#include<cfloat>
#include<cstring>
#include<algorithm>
#include<cmath>

using namespace std;
typedef pair<int,int> pa;

pa p;
int n;
vector<pa> v;
double dp[2010][2010],ans=DBL_MAX,te;
inline double dis(const pa& a,const pa& b){return sqrt((a.firs
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值