UVa 1347
来源:互联网 发布:爱淘宝怎么注册账号 编辑:程序博客网 时间:2024/06/05 15:43
#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;const double INF=0x3f3f3f3f3f3f3f3f;const int maxn=10000;double lens;int n;double dp[maxn][maxn];struct nm{ int x,y;}a[maxn];double desit(int i,int j){ double ans=(a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y); return sqrt(ans);}double solve(){ for(int i=2;i<n;i++) { dp[i][i-1]=INF; for(int j=0;j<i-1;j++) { dp[i][i-1]=min(dp[i][i-1],dp[i-1][j]+desit(i,j)); dp[i][j]=dp[i-1][j]+desit(i,i-1); } } double ans=INF; for(int j=0;j<n-1;j++) { ans=min(ans,dp[n-1][j]+desit(n-1,j)); } return ans;}int main(){ while(scanf("%d",&n)!=EOF) { memset(dp,0,sizeof(dp)); lens=0; for(int i=0;i<n;i++) { scanf("%d%d",&a[i].x,&a[i].y); } dp[1][0]=desit(0,1); lens=solve(); printf("%.2lf\n",lens); } return 0;}
dp[i][i-1]=min(dp[i][i-1],dp[i-1][j]+desit(i,j));//某一个人从第j的位置走到i的位置
dp[i][j]=dp[i-1][j]+desit(i,i-1);//从i-1走到i
还有就是这里的dp和紫书上的解析是不一样的。这里的指的是当走到i,j的时候最短的已走的路程是多少。
而紫书上的是当走到(i,j)位置的时候还需要走多长的距离。
0 0
- uva-1025、uva-437、uva-1347、uva-116、uva-12563
- uva 1347
- uva 1347
- UVa 1347
- UVA 1347
- UVA-1347
- UVA-1347
- uva 1347
- uva 1347 - Tour
- Tour - UVa 1347 dp
- UVa 1347 Tour(DP)
- UVa 1347 Tour(DP)
- UVA 1347 Tour DP
- UVa - 1347 - Tour
- UVA - 1347 Tour
- DP UVA 1347
- Uva-1347 Power Calculus
- uva 1347 tour
- BZOJ 1798 [Ahoi2009]Seq 维护序列seq
- 什么是语义化标签?
- JVM性能调优jps、jstack、jmap、jhat、jstat、hprof命令详解
- 嵌入式开发第二日(man 手册、linux基本命令、vim编辑器、代码编译过程、编译工具、基本数据类型、控制流)
- 乐乐音乐-KSC歌词图片生成器
- UVa 1347
- Ext初学
- 丑数
- 《leetCode》:Binary Tree Paths
- 100. Same Tree--LeetCode Record
- 【usaco 2012 Nov Bronze】找奶牛Find the Cow!
- uva 12169 - Disgruntled Judge(暴力or欧几里得 )
- dos界面操作mysql讲解
- Android 学习之路