比較经典的动态规划的题目了

一般动态规划的想法都是先推断是否有最优子结构,无后效性。接着从状态转移入手,尽量细分状态(即给定N得到N+1),完了再递推计算

难点:转移方程,其一般也难在怎样描写叙述一个结点

有时候不太好做就结合使用记忆化搜索(从大到小搜索,由于多个小的可能会组成一个大的导致无效计算过多)

/************************************************************************/
/*
动态规划三要素:
1.最优子结构 一个最优化策略的子策略总是最优的
2.无后效性 它曾经各阶段的状态无法直接影响它未来的决策,而仅仅能通过当前的这个状态
3.子问题重叠 动态规划将原来具有指数级时间复杂度的搜索算法改进成了具有多项式时间复杂度的算法 非常明显的状态转移
拆分的要素是时间,这里对于每一个电桩都是一个状态断点,这里加入上起点终点构成0.1.2...N+1种状态
对于某一个电桩,其最优化策略是 min(之前各个电桩最优状态下加上充电时间)
dp[i]=min(dp[j])+T;0<=j<i<=N+1 */
/************************************************************************/ #include <iostream>
#include <cstdio>
#include <vector>
#include <string>
#define maxn 100+10 int L,C,T,N,VR,V1,V2,M,num;
float dp[maxn];
int charge[maxn];
int main()
{
int i,j,k;
float tmp,rabbit,TV1,ans;
while(scanf("%d%d%d%d%d%d%d",&L,&N,&C,&T,&VR,&V1,&V2)!=EOF)
{
for(i=1;i<=N;i++)
scanf("%d",charge+i);
dp[0]=-1*T;//刚開始不用充电
charge[0]=0;//补充充电桩
charge[N+1]=L;//补充充电桩
TV1=C/(V1+0.0);//计算骑在最大可行距离C下,电动车用时
rabbit=L/(VR+0.0);//计算兔子用时
for(i=1;i<=N+1;i++)
{
ans=1e9;//求dp[i]最小值
for(j=0;j<i;j++)
{
tmp=dp[j];
k=charge[i]-charge[j];
if(C<k)//推断可否一次性用电动车骑完
tmp+=TV1+(k-C+0.0)/V2;
else
tmp+=k/(V1+0.0);
ans=ans>tmp? tmp:ans;//求dp[i]最小值
}
dp[i]=ans+T; }
if(dp[N+1]<rabbit)
printf("What a pity rabbit!\n");
else
printf("Good job,rabbit!\n"); }
return 0;
}

每日一dp(2)——龟兔赛跑(hdu 2059)的更多相关文章

  1. hdu 2059 龟兔赛跑(动态规划DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059 龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    M ...

  2. hdu 2059 龟兔赛跑(dp)

    龟兔赛跑 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击——赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州下沙某农业园卧薪尝胆潜心修炼,终于练成 ...

  3. HDU 2059 龟兔赛跑(超级经典的线性DP,找合适的j,使得每个i的状态都是最好的)

    龟兔赛跑 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  4. hdu 2059:龟兔赛跑(动态规划 DP)

    龟兔赛跑 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

  5. HDU - 2059 龟兔赛跑(多阶段决策dp)

    http://acm.hdu.edu.cn/showproblem.php?pid=2059 初始把起点和终点也算做充电站,设dp[i]是到第i个充电站的最短时间,那么dp[n+1]即是乌龟到达终点的 ...

  6. HDU 2059 龟兔赛跑 (dp)

    题目链接 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击--赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州下沙某农业园卧薪尝胆潜心修炼,终于练成 ...

  7. hdu 2059 龟兔赛跑 (dp)

    /* 把起点和终点比作加油站,那总共同拥有n+2个加油站了, 每次都求出从第0个到第j个加油站(j<i)分别在加满油的情况下到第i个加油站的最短时间dp[i], 终于的dp[n+1]就是最优解了 ...

  8. HDU 2059 龟兔赛跑(动态规划)

    龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  9. 题解报告:hdu 2059 龟兔赛跑

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击—— ...

随机推荐

  1. Pros and Cons of T4 in Visual Studio 2008

    Oleg Sych - » Pros and Cons of T4 in Visual Studio 2008 Pros and Cons of T4 in Visual Studio 2008 Po ...

  2. [Medusa-dev] psp_handler - embed python in HTML like ASP

    [Medusa-dev] psp_handler - embed python in HTML like ASP [Medusa-dev] psp_handler - embed python in ...

  3. iOS 系统架构 && 常用 framework

    整理自互联网,感谢原文作者! 1.iOS基于UNIX系统,因此从系统的稳定性上来说它要比其他操作系统的产品好很多 2.iOS的系统架构分为四层,由上到下一次为:可触摸层(Cocoa Touch lay ...

  4. A Corrupt Mayor's Performance Art(线段树区间更新+位运算,颜色段种类)

    A Corrupt Mayor's Performance Art Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 100000/100 ...

  5. 2014年百度之星资格赛第二题Disk Schedule

    Problem Description 有非常多从磁盘读取数据的需求,包含顺序读取.随机读取.为了提高效率,须要人为安排磁盘读取. 然而,在现实中,这样的做法非常复杂. 我们考虑一个相对简单的场景. ...

  6. Android 四大组件之 BroadcastReceiver

    0  简介        BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的 广播.        在Android系统中,广播体现在方方面面,例 ...

  7. Android Project from Existing Code 生成 R 文件错误、失败等问题解决办法 - 持续更新

    Android Project from Existing Code 生成 R 文件错误.失败等问题解决办法 - 持续更新 git  上的项目,pull下来之后用Android Project fro ...

  8. 更新-----Scripts:执行双网卡绑定

    #!/bin/bash #------------------------------------------------------------------------------- # Name: ...

  9. sql 随机数

    select FLOOR(rand()*16) 就是随机得到0到15之间的一个整数 select CEILING(rand()*15) 就是随机得到1到15之间的一个整数 FLOOR()为地板函数,取 ...

  10. ASP.NET实现图片防盗链(转)

    使用httpHandle来实现,对图片文件的请求做专门的处理第一步:创建一个类,继承自IHttpHandler,代码如下 C# code using System; using System.Web; ...