Uva 1347 旅行

news/2024/10/22 5:03:43/

Description

给定平面上n个点,设计一条路线,从1号点出发,走到n号点在走回来,除了最左边的点,其他每个点恰好经过一次,且是的路径总长最短。两点之间的路径长度为欧几里得距离(就是直线距离)。

Solution

处理从1号点走到n号点在走回来的情况很复杂,所以我们可以假设有2个人一起走,并且走的点不重复。
f[i][j] 表示第一个人走到i,第二个人走到j的最优答案。但是这样还是不知道自己走的对方是否走过。
所以设 f[i][j] 表示1..i都走过,第一个人走到i,第二个人走到j的最优答案。
那么可能是第一个人走到i+1或是第二个人走到i+1。
所以转移变成了 f[i][j]f[i+1][j],f[i][j]f[i][i+1]
但这样还是有弊端。
N2 的空间很大,必须开滚动数组。假设i和j相差很大,不可能完成所有的转移。
所以强制i>j。
所以 f[i][j]f[i+1][i]f[i+1][j]
为什么这样是对的?
在进行点i+1的更新时,我们可以假想是哪个人选了第i+1个点。这个记录过程类似于背包。那么 f[i][j]f[j][i] 维护的是一样的东西。
所以可以强制i>j.

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define N 5010
#define DB double
#define fo(i,a,b) for(i=a;i<=b;i++)
#define fd(i,a,b) for(i=a;i>=b;i--)
using namespace std;
DB f[2][N];
int i,j,k,l,n,o;
DB x[N],y[N];
DB dis(int a,int b){return sqrt((x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b]));
}
int main(){scanf("%d",&n);fo(i,1,n) scanf("%lf%lf",&x[i],&y[i]);fo(j,1,n-1)f[o][j]=dis(n,n-1)+dis(n,j); fd(i,n-2,2){o=1-o;fo(j,1,i-1)f[o][j]=min(f[1-o][j]+dis(i+1,i),f[1-o][i]+dis(i+1,j));}printf("%.4lf",f[o][1]+dis(1,2)); return 0;
}

http://www.ppmy.cn/news/191692.html

相关文章

UVA1347 Tour

题目大意&#xff1a; 给你n个坐标 按x递增顺序给出坐标 让一个人按严格x递增顺序走到最后一个点 之后再从最后一个点严格向左走回来 要求走的时候除了起点终点经过两次以外其他点全部都经过一次 问最短路径 思路&#xff1a;dp 这里紫书的第一个图是有问题的 题目要求人向右走…

UVA 1347 Tour

描述 Click Here \quad 给定平面上n(n<1000)个点的坐标(按照x递增的顺序给出。各点x坐标不同&#xff0c;且均为整数)&#xff0c;你的任务是设计一条路线&#xff0c;从最左边的点出发走到最右边的点再返回&#xff0c;要求除了最左边和最右边之外&#xff0c;每个点恰好…

1347: 众数

题目描述 由文件给出N个1到30000间无序数正整数&#xff0c;其中1≤N≤10000&#xff0c;同一个正整数可能会出现多次&#xff0c;出现次数最多的整数称为众数。求出它的众数及它出现的次数。 输入 输入第一行是正整数的个数N&#xff0c;第二行开始为N个正整数。 输出 输出有…

UVa1347旅行

题意&#xff1a;n个点&#xff0c;坐标给出&#xff0c;设计一条路线&#xff0c;从最左边的点&#xff0c;走到最右边的点&#xff0c;再回来&#xff0c;除最左边的点和最右边的点外&#xff0c;每个点有且经过一次。求最短距离。 分析&#xff1a; 转换一下思路&#xff0c…

14年macmini装双硬盘_2011中Mac Mini详尽拆解 可装两块硬盘

前言&#xff1a;ifixit这位拆解专业户在苹果发布了2011年中款的MacBook Air和Mac Mini这个时候&#xff0c;自然是不会闲着的。这不分解完了新版的MacBook Air之后&#xff0c;新版的Mac Mini也在ifixit的拆解大师们的手下&#xff0c;被细细分解。 第一步&#xff1a; 我们(i…

uva-1347

题目链接&#xff1a;https://vjudge.net/problem/UVA-1347 题意&#xff1a;有n个点&#xff0c;给出x、y坐标。找出一条路&#xff0c;从最左边的点出发&#xff0c;严格向右走到达最右点再严格向左回到最左点。问最短路径是多少&#xff1f; 不看题解我是真的不知道这个题可…

mini计算机结构,简单拆机看内部构造_苹果 Mac mini MGEN2CH/A_台式电脑评测-中关村在线...

从整个外观设计来看,新Mac mini的变化确实不大,仅仅是在接口配置与布局方面有所不同,而内部变化在先前的拆机中有所展示,当然在此还是有必要重新梳理一边。首先新Mac mini的底盖圆盘的固定方式较之上一代产品有所改变,原先旋钮式固定方式变更为卡扣式固定,因此拆机时需要…

Mac Mini换固态硬盘

新年新气象&#xff0c;今天来把mini升级下&#xff0c;换个固态硬盘。 mini型号&#xff1a; A1347 &#xff0c; 2013版 材料&#xff1a; 固态硬盘一个&#xff0c;螺丝刀一套(里面需包含六角T6、T8和M2的螺丝刀)&#xff0c;U盘一个&#xff0c;拨片一个。如图&#xff1a;…