The shortest path---hdu2224 && Tour---poj2677(旅行商问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2224
题意:平面上有n个点,问去的路只能从左到右,回的路只能从右到左的,且来回必须经过所有点的最小路径;
dp[i][j] 表示以j为起点,1为拐点 ,i为终点的最短路;
j < i-1 时,那么i-1这个点在来的路径上 必然等于dp[i-1][j] + dis[i-1][i] ;
j = i -1 ,那么i-1这个点在回的路径上,那么dp[i][j] = min(dp[k][j] + dis[k][j]) 1<=k < j; 因为dp[i][j] = dp[j][i], 所以dp[i][j] = min(dp[j][k] + dis[k][j]) 1<=k < j
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <iostream>
#include <time.h>
#include <vector>
#include <queue> typedef long long LL; using namespace std; const int N = ;
const double eps = 1e-;
const int INF = 0x3f3f3f3f;
const int mod = ;
const double PI = *atan(1.0); struct point
{
double x, y;
}p[N]; double Dist(point p1, point p2)
{
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
} int n;
double dp[N][N];///表示以j为起点,1为拐点,i为终点,经历所有i到j之间的点;
/*
double DP()
{
dp[1][1] = 0;
dp[2][1] = Dist(p[1], p[2]);
for(int i=3; i<=n; i++)
{
for(int j=1; j<i-1; j++)
dp[i][j] = dp[i-1][j] + Dist(p[i-1],p[i]);
double Min = INF;
for(int k=1; k<i-1; k++)
Min = min(Min, dp[i-1][k] + Dist(p[k], p[i]));
dp[i][i-1] = Min;
}
dp[n][n] = dp[n][n-1] + Dist(p[n-1], p[n]);
return dp[n][n];
}*/ double DFS(int s, int e)
{
if(dp[s][e] != )
return dp[s][e];
if(s < e-)
dp[s][e] = DFS(s, e-) + Dist(p[e-], p[e]);
else
{
double Min = INF;
for(int i=; i<e-; i++)
Min = min(Min, DFS(i, s) + Dist(p[i], p[e]));
dp[s][e] = Min;
}
return dp[s][e];
} int main()
{
while(scanf("%d", &n) != EOF)
{
memset(dp, , sizeof(dp));
for(int i=; i<=n; i++)
scanf("%lf %lf", &p[i].x, &p[i].y);
///double ans = DP();
dp[][] = ;
dp[][] = dp[][] = Dist(p[], p[]);
DFS(n-, n);
dp[n][n] = dp[n-][n] + Dist(p[n-], p[n]);
printf("%.2f\n", dp[n][n]);
}
return ;
}
The shortest path---hdu2224 && Tour---poj2677(旅行商问题)的更多相关文章
- HDU 2224 The shortest path
The shortest path Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- hdu-----(2807)The Shortest Path(矩阵+Floyd)
The Shortest Path Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- zoj 2760 How Many Shortest Path 最大流
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1760 Given a weighted directed graph ...
- The Shortest Path in Nya Graph
Problem Description This is a very easy problem, your task is just calculate el camino mas corto en ...
- hdu 3631 Shortest Path(Floyd)
题目链接:pid=3631" style="font-size:18px">http://acm.hdu.edu.cn/showproblem.php?pid=36 ...
- Shortest Path(思维,dfs)
Shortest Path Accepts: 40 Submissions: 610 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: ...
- Shortest Path
Shortest Path Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- (中等) HDU 4725 The Shortest Path in Nya Graph,Dijkstra+加点。
Description This is a very easy problem, your task is just calculate el camino mas corto en un grafi ...
- 【ZOJ2760】How Many Shortest Path
How Many Shortest Path 标签: 网络流 描述 Given a weighted directed graph, we define the shortest path as th ...
- [Swift]LeetCode847. 访问所有节点的最短路径 | Shortest Path Visiting All Nodes
An undirected, connected graph of N nodes (labeled 0, 1, 2, ..., N-1) is given as graph. graph.lengt ...
随机推荐
- java中的集合
集合比数组的优势: 1.集合可以存任意类型的变量,长度是可变的 2.数组只能存同一类型的变量,长度是固定的 3.集合中只能存对象 List集合 : 接口 提供公有的方法 特有的方法: 1.List中 ...
- scala安装
一:在官网下载相应的版本http://www.scala-lang.org/download/2.10.6.html 二,在linux中解压下载下来的scala包 三:配置环境变量 export ...
- Runnable接口
Runnable接口的说用是使线程不仅可以继承Thread类实现,还可以继承其他类(比如:JFrame). 此接口具有两个构造方法: (1)public Thread(Runnable r) (2)p ...
- HBASE列族不能太多的真相 (一个table有几个列族就有几个 Store)
HRegionServer内部管理了一系列HRegion对象,每个HRegion对 应了table中的一个region,HRegion中由多 个HStore组成.每个HStore对应了Table中的一 ...
- hdu 1501 Zipper
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1501 思路:题目要求第三个串由前两个组成,且顺序不能够打乱,搜索大法好 #include<cstdi ...
- MyBabis 用法详解
MyBatis 一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架(消除了几乎所以得JDBC代码和参数的手工设置及结果集的检索) MyBatis可以使用简单的XML或注解用于配置和原始映射,将 ...
- JAVA Day11
接口 interface public interface Demo { public abstract void demo(); } 接口中的方法全部都是抽象的. 接口的特性 接口不可以被实例化 ...
- 疑问:line-height对非文字行内块的影响
line-height:对子元素是非文字的行内块,表现出来的不是垂直居中.目前还不知道具体细节. 可以看出来两个东西不在一行.老师的解释是line-height对非文字元素解释不一样,但是我没懂细节. ...
- js的回调函数 一些例子
这边用bootstrap 3.0的 上传控件做例子 下面是上传控件的一段完整的 js 操作 代码. <!-- 上传缩略图控件配置 --><script> // 定义这四个全局 ...
- checkedListBox
checkedListBox一键删除多个选中items private void button3_Click(object sender, EventArgs e) { ; i < checke ...