hdu-2059
来源:互联网 发布:centos执行sh文件命令 编辑:程序博客网 时间:2024/06/08 11:12
在没学算法之前就做过这道题 ,当时不会做,也不知道动态规划算法,最近在做DP入门,碰到这个题,感觉AC萌萌哒。
本题的主要思路:先考虑可能在任意一个加油站作为乌龟最后加油的地方。。。然后利用第推的思想卒个求和。。。。比如乌龟可能把第二个加油站作为最后加油的地点。。。由此我们需要依次求出把原点作为前一个加油站到第二个加油站的时间和把第一个加油站作为前一个加油站到第二加油站的时间。。。然后比较两种路径所用时间的多少求出把第二个作为最后加油站所用的最短时间。。。以此类推。。。以后各种情况均可由此法求得。。。。
#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>#include <stdlib.h>#include <malloc.h>using namespace std;int l,n,c,t,vr,v1,v2;int p[110];double dp[110];int main (){ while (scanf ("%d%d%d%d%d%d%d",&l,&n,&c,&t,&vr,&v1,&v2)!=EOF) { for (int i=1 ;i<=n;i++) scanf ("%d",&p[i]); p[0]=0; p[n+1]=l; dp[0]=0.0; /*for (int i=2 ;i<=n;i++) { dp[i] = min ( dp[i-1] +( p[i] - p[i-1])*1.0/v2*1.0,dp[i-1] + (p[i] - p[i-1])*1.0/v1 + t*1.0 ); } */ for (int i =1 ;i<=n+1;i++) { dp[i]=1000000; for (int j =0 ;j<i;j++) { double tmp; double len = (p[i] - p[j])*1.0; if ( len >= c ) tmp = c*1.0/v1 + (len - c)*1.0/v2; else tmp = len*1.0/v1 ; if (j) tmp+=t; dp[i] = min( dp[i],dp[j]+tmp); } } double t1 = l*1.0 / vr; if (t1 > dp[n+1]) printf("What a pity rabbit!\n"); else printf("Good job,rabbit!\n"); } return 0;}
0 0
- HDU 2059
- hdu 2059
- hdu 2059
- HDU 2059
- HDU-2059
- HDU-2059
- hdu 2059
- hdu-2059
- HDU 2059
- HDU 2059
- hdu 2059
- hdu 2059 DP
- hdu 2059 dp
- hdu 2059 简单dp
- hdu 2059(dp)
- HDU 2059 动态规划
- hdu 2059 加油站(dp)
- HDU 2059 JAVA
- Draw with a Canvas
- crontab 跑任务的时候一定要注意设置环境变量
- 大学专利购买
- linux top命令VIRT,RES,SHR,DATA的含义
- JavaScript中定义类的方法
- hdu-2059
- Word Break
- redis
- 请教一个Nginx下rewrite问题
- NuGet
- 【Android UI设计与开发】第06期:底部菜单栏(一)使用TabActivity实现底部菜单栏
- scala ReduceLeft
- 金山2009校园招聘成都一笔试题
- 理解Load Average做好压力测试