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

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

题意:

龟兔赛跑,兔子以恒定速度跑,乌龟骑电动车,中间有若干个站点,乌龟可以选择充电或者不充,充电需要花费时间,但有电时电动车快,没电时慢,问兔子能否赢乌龟。

一开始我用了各种姿势贪心,没有过。那个时候还根本不知道什么是动态规划,这也是 hdu 11 页上少数几道算法题了

如果知道 DP 那么这道题就可以做了,对于每个站点,任务是求到达的最短时间,其最短时间可以由之前的点来更新:枚举该点的上一次充电的站点,以到达上一站点的最短时间+中间不充电花的时间,以其中最短时间作为最优解,而不用考虑本站需不需要充电;

ans [ i ] = min ( ans [ j ] + t [ j , i ] )    ( j ∈[ 0 , i - 1 ] );

1 #include
2 #define min(a,b) (a)<(b)?a:b 3 int L,N,C,T,VR,VT1,VT2,p[102]; 4 double f(int d) 5 { 6 if(d<=C) return (double)d/VT1+T; 7 else return (double)C/VT1+(double)(d-C)/VT2+T; 8 } 9 int main(){10 while(scanf("%d%d%d%d%d%d%d",&L,&N,&C,&T,&VR,&VT1,&VT2)!=EOF){11 double ans[102];12 int i,j;13 for(i=1;i<=N;i++)scanf("%d",&p[i]);14 p[N+1]=L;15 for(i=1;i<=N+1;i++){16 ans[i]=f(p[i])-T;17 for(j=1;j
(double)L/VR) printf("Good job,rabbit!\n");20 else printf("What a pity rabbit!\n");21 }22 return 0;23 }
View Code

 

转载于:https://www.cnblogs.com/cenariusxz/p/4455115.html

你可能感兴趣的文章
EXCEL表中如何让数值变成万元或亿元
查看>>
nginx在响应request header时候带下划线的需要开启的选项
查看>>
Linux下DHCP服务器配置
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
我的IDEA配置
查看>>
myeclipse显示行号
查看>>
编写高性能的java程序
查看>>
Spring 的配置详解
查看>>
linux已经不存在惊群现象
查看>>
上位机和底层逻辑的解耦
查看>>
关于微信二次分享 配置标题 描述 图片??
查看>>
springcloud使用zookeeper作为config的配置中心
查看>>
校园火灾Focue-2---》洗手间的一套-》电梯
查看>>
css控制文字换行
查看>>
bzoj1913
查看>>
L104
查看>>
分镜头脚本
查看>>
链表基本操作的实现(转)
查看>>
邮件发送1
查看>>
[转] libcurl异步方式使用总结(附流程图)
查看>>