UVa 10801 Lift Hopping【floyd 】
2015-05-10 17:18
375 查看
题意:给出n个电梯,每个电梯的运行时间,每个电梯只能在相应的楼层停靠,而且没有楼梯,再给出想去的楼层,问从0层能否到达想去的楼层,求到达的最短时间
建图还是没有建出来---
因为n<100,可以用floyd
考虑到d[i][j]=min(d[i][j],d[i][k]+d[k][j])
d[i][k]+d[k][j],表示从第i层到达了第k层,又从第k层到达了第j层,说明在 k 层的时候换乘了电梯,需要加一个60
然后就是输入过程中,一直维护d[i][j]的最小值,更新的时候往上往下都要更新(因为电梯会往上运动和往下运动) 然后floyd就可以了
看的这一篇--http://mycodebattle.com/2014/08/UVa-10801/
View Code
这道题,先是因为自己的INF定义成(1<<30)-1;溢出了,改了好久
然后就是向上向下更新边,又wa了好久------------------
---------- 滚去吃饭了------------
g0000000000---------
建图还是没有建出来---
因为n<100,可以用floyd
考虑到d[i][j]=min(d[i][j],d[i][k]+d[k][j])
d[i][k]+d[k][j],表示从第i层到达了第k层,又从第k层到达了第j层,说明在 k 层的时候换乘了电梯,需要加一个60
然后就是输入过程中,一直维护d[i][j]的最小值,更新的时候往上往下都要更新(因为电梯会往上运动和往下运动) 然后floyd就可以了
看的这一篇--http://mycodebattle.com/2014/08/UVa-10801/
#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 = 0x3f3f3f3f; const int mod=1000000007; const int maxn=105; int d[maxn],f[maxn][maxn],t[maxn]; int n,en; int main(){ while(scanf("%d%d%*c",&n,&en)!=EOF){ memset(d,0,sizeof(d)); memset(t,0,sizeof(t)); for(int i=0;i<maxn;i++){ for(int j=0;j<maxn;j++){ if(i==j) f[i][j]=0; else f[i][j]=INF; } } for(int i=0;i<n;i++) scanf("%d%*c",&t[i]); for(int i=0;i<n;i++){ char ch=0; int j; for( j=0;ch!='\n';j++) scanf("%d%c",&d[j],&ch); for(int l=0;l<j;l++){ for(int r=l+1;r<j;r++){ int cur=f[d[l]][d[r]]; cur=min(cur,(d[r]-d[l])*t[i]); f[d[r]][d[l]]=cur;//往上往下的值都要更新 f[d[l]][d[r]]=cur; } } ch=0; } for(int k=0;k<105;k++) for(int i=0;i<105;i++) for(int j=0;j<105;j++) f[i][j]=min(f[i][j],f[i][k]+f[k][j]+60); if(f[0][en]==INF) puts("IMPOSSIBLE"); else printf("%d\n",f[0][en]); } return 0; }
View Code
这道题,先是因为自己的INF定义成(1<<30)-1;溢出了,改了好久
然后就是向上向下更新边,又wa了好久------------------
---------- 滚去吃饭了------------
g0000000000---------
相关文章推荐
- UVa 10801 - Lift Hopping (Floyd, Dijkstra, SPFA三合一)
- UVA 10801 Lift Hopping——最短路
- UVa 10801 Lift Hopping / floyd
- Lift Hopping - UVa 10801 Floyd
- uva 10801 - Lift Hopping
- UVA 10801 Lift Hopping
- UVA 10801 Lift Hopping
- UVa:10801 Lift Hopping (Bellmanford求最短路)
- UVA 10801 Lift Hopping 最短路
- UVa 10801 - Lift Hopping
- UVA 10801 - Lift Hopping Dijkstra 算法
- UVa 10801 Lift Hopping / floyd
- UVa 10801 Lift Hopping (最短路+Dijkstra+建图)
- uva 10801 Lift Hopping(dijkstra)
- UVA 10801 Lift Hopping 电梯换乘(最短路,变形)
- UVa 10801 Lift Hopping (Dijkstra)
- [UVA 10801]Lift Hopping[Dijkstra][建图]
- UVA - 10801 Lift Hopping (Dijkstra)
- UVA 10801 Lift Hopping
- UVA 10801 Lift Hopping