uva1632 dp
来源:互联网 发布:mes用什么软件 编辑:程序博客网 时间:2024/05/20 18:50
P269, 关键在于自己强制规定了 i是大于j的,
d(i,j)表示的是已经走过max(i,j)还需要的距离值,当然设d为还需要的距离值,这很常见。//然而自己不知道。。。
#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<string>#include<cstring>#include<iomanip>#include<iostream>#include<stack>#include<cmath>#include<map>#include<vector>#define ll long long#define inf 0x3f3f3f3f#define INF 1000000000#define bug1 cout<<"bug1"<<endl;#define bug2 cout<<"bug2"<<endl;#define bug3 cout<<"bug3"<<endl;using namespace std;const int maxn=1005;int x[maxn],y[maxn];double dist[maxn][maxn];double dp[maxn][maxn];int main(){ int n; while(~scanf("%d",&n)){ memset(dp,inf,sizeof(dp)); for(int i=1;i<=n;++i)scanf("%d%d",&x[i],&y[i]); for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j){ dist[i][j] = sqrt((x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j])); } } for(int i=n-1;i>=2;i--){ for(int j=1;j<i;++j){ if(i==n-1)dp[i][j]=dist[i][n]+dist[j][n]; else dp[i][j]=min(dist[i][i+1]+dp[i+1][j],dist[j][i+1]+dp[i+1][i]); } } printf("%.2lf\n",dist[2][1]+dp[2][1]);//这个2并不是真的就表示标号为2的点,而是最左边的第一个点和第二个点。。 }}
0 0
- uva1632 dp
- uva1632(区间dp)
- 区间dp+ 滚动数组uva1632
- UVa1632 dp 滚动数组 紫书习题9-8
- 【DP 训练】Alibaba, ACM/ICPC SEERC 2004, UVa1632
- 习题9-8 Uva1632
- 紫书 习题 9-8 uva1632
- dp
- dp
- dp
- 【DP】
- dp
- dp
- DP
- DP
- DP
- DP
- DP
- 装饰者模式
- Neural Machine Translation and Sequence-to-sequence Models: A Tutorial
- 1020. Tree Traversals (25)
- delphi中的ParamStr
- kylin入门到实战:cube详述
- uva1632 dp
- 手机版本高于Xcode版本的时候,怎么不更新Xcode继续在手机上运行
- Flume+Spark+Hive+Spark SQL离线分析系统
- 部署linux服务器
- 【Java学习笔记】06.类和对象
- 字母、数字和点数的识别-类osmo软件开发
- Finding LCM gcd
- ZigBee长地址的使用
- 用数组实现线性表