UVa 1001 Say Cheese【floyd】
2015-05-09 16:56
417 查看
题意:在一个三维的奶酪里面有n(n<=100)个洞,老鼠A想到达老鼠B的位置,
在洞里面可以瞬间移动,在洞外面的移动速度为10秒一个单位,求最短时间
看到n<=100,又是求最短时间,想到用floyd,可是给的是坐标,,还是三维的,
建不出图来----最后看的题解--------------
是这一篇--
http://morris821028.github.io/2014/11/02/oj/uva/uva-1001/
不懂这种叫不叫离散化,把输入的每个洞编号,
如果两个洞相交,那么d[i][j]=0
如果不相交,那么d[i][j]=dist-(r[i]+r[j]),dist为这两个洞圆心之间的欧几里得距离
再用floyd处理就可以了
View Code
在洞里面可以瞬间移动,在洞外面的移动速度为10秒一个单位,求最短时间
看到n<=100,又是求最短时间,想到用floyd,可是给的是坐标,,还是三维的,
建不出图来----最后看的题解--------------
是这一篇--
http://morris821028.github.io/2014/11/02/oj/uva/uva-1001/
不懂这种叫不叫离散化,把输入的每个洞编号,
如果两个洞相交,那么d[i][j]=0
如果不相交,那么d[i][j]=dist-(r[i]+r[j]),dist为这两个洞圆心之间的欧几里得距离
再用floyd处理就可以了
#include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<stack> #include<vector> #include<map> #include<set> #include<queue> #include<algorithm> using namespace std; #define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i) typedef long long LL; const int INF = (1<<30)-1; const int mod=1000000007; const int maxn=505; int x[maxn],y[maxn],z[maxn],r[maxn]; double d[maxn][maxn]; int main(){ int n,kase=0; while(scanf("%d",&n)!=EOF&&n!=-1){ for(int i=1;i<=n+2;i++){ if(i<=n) scanf("%d %d %d %d",&x[i],&y[i],&z[i],&r[i]); else scanf("%d %d %d",&x[i],&y[i],&z[i]),r[i]=0; } n=n+2; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(i==j) d[i][j]=0; else { double dist=sqrt((double )(x[i]-x[j])*(x[i]-x[j])+(double)(y[i]-y[j])*(y[i]-y[j])+(double)(z[i]-z[j])*(z[i]-z[j])); if(dist<=r[i]+r[j]) d[i][j]=0; else d[i][j]=dist-(r[i]+r[j]); } } } for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) d[i][j]=min(d[i][j],d[i][k]+d[k][j]); printf("Cheese %d: Travel time = %.0lf sec\n",++kase,d[n-1] *10); } return 0; }
View Code
相关文章推荐
- UVa 1001 Say Cheese (Floyd)
- UVA 1001 Say Cheese 奶酪里的老鼠(最短路,floyd)
- [Uva 1001] Say Cheese [Floyd]
- UVa 1001 Say Cheese - 最短路
- UVA 1001 Say Cheese(dijkstra算法)
- UVA 1001 Say Cheese——最短路
- uva 1001 say cheese dijstra
- Say Cheese UVA - 1001
- UVA 1001:Say Cheese(最短路)
- UVA 1001(p379)----Say Cheese
- UVa 1001 奶酪里的老鼠(Dijkstra或Floyd)
- 1001 - Say Cheese (Dijkstra算法)
- UVA 1001 Say Cheese (三维Floyd)
- UVa 10048 噪音恐惧症(Floyd)
- UVa567 Risk(floyd)
- uva10099(最长路问题Floyd)
- UVA 567 Risk【floyd】
- uva_10048_Audiophobia(floyd)
- UVa:10803 Thunder Mountain(floyd求多源最短路)
- uva567 Risk(floyd)