博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj3037
阅读量:4957 次
发布时间:2019-06-12

本文共 2253 字,大约阅读时间需要 7 分钟。

只有一点转化就是一路上的速度在每一段是有变化的,但是实质上到达每一点的速度是一定的v*2^(1-h),那么也就是边权确定,可以用spfa求解,还有一点就是初始化要大,应为可以-25 <= E <= 25,也就是可能存在2^(50)这种数据。

View Code
1 #include 
2 #include
3 #include
4 #include
5 using std::queue; 6 #define INF 11258999068426240000 7 #define MAXN 11000 8 #define clup(i,j) ((i)*(c+2)+(j)) 9 struct node 10 {
11 int d,next; 12 double c; 13 }edge[5*MAXN]; 14 int head[2*MAXN],p; 15 bool vis[2*MAXN]; 16 double dist[2*MAXN]; 17 int v,r,c,h; 18 queue
q; 19 void add(int a,int b,double c) 20 {
21 edge[p].d=b; 22 edge[p].c=c; 23 edge[p].next=head[a]; 24 head[a]=p++; 25 } 26 void spfa() 27 {
28 vis[clup(1,1)]=true; 29 q.push(clup(1,1)); 30 dist[clup(1,1)]=0; 31 int k; 32 while(!q.empty()) 33 {
34 k=q.front(); 35 q.pop(); 36 vis[k]=false; 37 for(int i=head[k];i!=-1;i=edge[i].next) 38 if(dist[edge[i].d]>dist[k]+edge[i].c) 39 {
40 dist[edge[i].d]=dist[k]+edge[i].c; 41 if(!vis[edge[i].d]) 42 {
43 vis[edge[i].d]=true; 44 q.push(edge[i].d); 45 } 46 } 47 } 48 } 49 int main() 50 {
51 //freopen("test.txt","r",stdin); 52 while(scanf("%d %d %d",&v,&r,&c)==3) 53 {
54 memset(head,-1,sizeof(head)); 55 memset(vis,false,sizeof(vis)); 56 p=0; 57 for(int i=1,a;i<=r;++i) 58 for(int j=1;j<=c;++j) 59 {
60 scanf("%d",&a); 61 if(i==1&&j==1) h=a; 62 add(clup(i,j),clup(i-1,j),pow(2.0,(double)(a-h))/v); 63 add(clup(i,j),clup(i,j-1),pow(2.0,(double)(a-h))/v); 64 add(clup(i,j),clup(i+1,j),pow(2.0,(double)(a-h))/v); 65 add(clup(i,j),clup(i,j+1),pow(2.0,(double)(a-h))/v); 66 } 67 for(int i=0;i<=(r+2)*(c+2);dist[i++]=INF); 68 spfa(); 69 printf("%.2f\n",dist[clup(r,c)]); 70 } 71 return 0; 72 }

 

 

转载于:https://www.cnblogs.com/mengxm-lincf/archive/2012/02/22/2363699.html

你可能感兴趣的文章
iPhone在日本最牛,在中国输得最慘
查看>>
动态方法决议 和 消息转发
查看>>
WPF自定义搜索框代码分享
查看>>
js 基础拓展
查看>>
SpringBoot访问html访问不了的问题
查看>>
{width=200px;height=300px;overflow:hidden}
查看>>
C#生成随机数
查看>>
CSS基础学习 20.CSS媒体查询
查看>>
2019春季第十一周作业
查看>>
洛谷P4591 [TJOI2018]碱基序列 【KMP + dp】
查看>>
iOS CoreData介绍和使用(以及一些注意事项)
查看>>
OS笔记047代理传值和block传值
查看>>
Android应用程序与SurfaceFlinger服务的连接过程分析
查看>>
coco2dx服务器简单例子
查看>>
Java回顾之多线程
查看>>
sqlite
查看>>
机电行业如何进行信息化建设
查看>>
Windows Azure Platform Introduction (4) Windows Azure架构
查看>>
【转】chrome developer tool 调试技巧
查看>>
mahout运行测试与kmeans算法解析
查看>>