传送门

https://www.cnblogs.com/violet-acmer/p/9852294.html

题解:

  看到这个题,第一反应就是DP,因为对于每个充电站,都有两种选择,充电或不充电,和"01"背包问题很想。

  1.首先对问题进行分析是否可用动态规划

    (1)是否满足最优子结构性质

      此问题求的是乌龟是否可以赢兔子,可以转化为求乌龟跑完全程所需的时间问题,而问题的最优解为跑完全程所需的最少时间,如果求出跑完全称所需时间的最优解,

    那么其包含的子问题“跑完某一段路程所需时间”也是最优解。

    (2)是否满足无后效性性质

      设dp[ i ]表示从起点跑到第 i 个充电站所需的最少时间,而状态dp[ 1,......i-1 ],一旦确定,则在求解dp[ i ]的时候,之和之前状态的最优解的值有关,和之前是采取哪种

    手段演变到dp[ 1,.......,i-1] 状态,没有关系。

  2.当满足以上两个性质的时候,表明此题可用DP做,具体步骤如下

    相关变量解释:

      dp[maxn]..............................如前所属,dp[ i ]表示从起点跑到第 i 个充电站所需的最少时间,先确定的dp[1]的最优解,因为在起点处无充电站,所以直接求出即可。

      dist[maxn]............................dist[i] : 第 i 个点距起点的距离

    一共有 N 个充电站,在算上起点和中点,所以说一共有 N+2个点,所以dist[0]=0,dist[1,.....N]分别为第 i 个充电站距起点的距离,dist[N+1]=L

    for i : 2 to N+1

      初始化dp[ i ]=dp[i]=(dist[i] <= C ? 1.0*dist[i]/VT1:1.0*C/VT1+1.0*(dist[i]-C)/VT2);//意思是从起点一路狂奔到 i 点,中间遇到充电站也不充电所需要的时间

      for j : 1 to i-1

        判断能否更新dp[ i ]

          dp[i]=min(dp[i],dp[j]+T+(d <= C ? 1.0*d/VT1:1.0*C/VT1+1.0*(d-C)/VT2));// d : 点 i 距点 j 的距离,判断在 j 点充电与不充电那个更能更快的到达 i 点

AC代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define INF 0x3f3f3f3f
#define mem(a,b) memset(a,b,sizeof(a))
#define esp 1e-6
const int maxn=+; int L;
int N,C,T;
int VR;
int VT1,VT2;
double dp[maxn];
int dist[maxn]; void Solve()
{
dp[]=(dist[] <= C ? 1.0*dist[]/VT1:1.0*C/VT1+1.0*(dist[]-C)/VT2);
for(int i=;i <= N+;++i)
{
dp[i]=(dist[i] <= C ? 1.0*dist[i]/VT1:1.0*C/VT1+1.0*(dist[i]-C)/VT2);
for(int j=;j < i;++j)
{
int d=dist[i]-dist[j];
dp[i]=min(dp[i],dp[j]+T+(d <= C ? 1.0*d/VT1:1.0*C/VT1+1.0*(d-C)/VT2));
}
}
if(dp[N+]-1.0*L/VR > esp)
printf("Good job,rabbit!\n");
else
printf("What a pity rabbit!\n");
}
int main()
{
while(~scanf("%d",&L))
{
scanf("%d%d%d",&N,&C,&T);
scanf("%d%d%d",&VR,&VT1,&VT2);
for(int i=;i <= N;++i)
scanf("%d",dist+i);
dist[]=,dist[N+]=L;
Solve();
}
}

hdu 2059龟兔赛跑("01"背包)的更多相关文章

  1. hdu 2546 典型01背包

    分析:每种菜仅仅可以购买一次,但是低于5元不可消费,求剩余金额的最小值问题..其实也就是最接近5元(>=5)时, 购买还没有买过的蔡中最大值问题,当然还有一些临界情况 1.当余额充足时,可以随意 ...

  2. ACM HDU Bone Collector 01背包

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 这是做的第一道01背包的题目.题目的大意是有n个物品,体积为v的背包.不断的放入物品,当然物品有 ...

  3. hdu 2955 Robberies (01背包)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 思路:一开始看急了,以为概率是直接相加的,wa了无数发,这道题目给的是被抓的概率,我们应该先求出总的 ...

  4. HDU 2639(01背包求第K大值)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2639 Bone Collector II Time Limit: 5000/2000 MS (Jav ...

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

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

  6. hdu 3466 排序01背包

    也是好题,带限制的01背包,先排序,再背包 这题因为涉及到q,所以不能直接就01背包了.因为如果一个物品是5 9,一个物品是5 6,对第一个进行背包的时候只有dp[9],dp[10],…,dp[m], ...

  7. hdu 2955 Robberies 0-1背包/概率初始化

    /*Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...

  8. HDU 2639 (01背包第k优解)

    /* 01背包第k优解问题 f[i][j][k] 前i个物品体积为j的第k优解 对于每次的ij状态 记下之前的两种状态 i-1 j-w[i] (选i) i-1 j (不选i) 分别k个 然后归并排序并 ...

  9. HDU——2955 Robberies (0-1背包)

    题意:有N个银行,每抢一个银行,可以获得\(v_i\)的前,但是会有\(p_i\)的概率被抓.现在要把被抓概率控制在\(P\)之下,求最多能抢到多少钱. 分析:0-1背包的变形,把重量变成了概率,因为 ...

随机推荐

  1. M2阶段团队贡献分

    根据任务完成情况与之前的评分标准,我们给组员分数如下: 团队成员 最终得分 程刚 51 李睿琦 53 刘丽萍 50 刘宇帆 48 王力民 47 马佐霖 49 左少辉 52

  2. 基于SSH框架开发的《高校大学生选课系统》的质量属性的实现

    基于SSH框架开发的<高校大学生选课系统>的质量属性的实现 对于可用性采取的是错误预防战术,即阻止错误演变为故障:在本系统主要体现在以下两个方面:(1)对于学生登录模块,由于初次登陆,学生 ...

  3. <软件体系结构>实验框架选择及其说明

    一.框架选择 本次实验,我所采取的框架是SSH框架.那么首先,我想简单的说明一下SSH框架,一方面给自己复习一下知识,另一方面也能使自己在以后看这篇博客的时候不至于太费力. SSH不是一个框架,而是S ...

  4. 第三个Sprint ------第九天

    四则运算APP内侧: 1将APP安装包apk发到QQ群(班群),让自己班的同学率先体检.通过同学们的反馈.及时处理好bug,快速迭代. 2将APP下载链接发到微信朋友圈,QQ空间,让其他学校的同学也体 ...

  5. Daily Scrum - 12/15-21

    Meeting Minutes 没有什么实质性进展: 添加/完成了一个新feature,即使用非线性的函数作为速度条的设定: 等待与travis开会,讨论下一步的feature = =: 阅读code ...

  6. java可变参数长度

    一: 在python中 有可变参数*args和万能参数**args参数分别为列表和字典.在java中也有类似的可变参数列表.不过传递进去的是可变参数数组. package com.company; p ...

  7. enumerate()函数用法

    enumerate 函数用于遍历序列中的元素以及它们的下标:

  8. 被深信服上网行为管理器AC拒绝的操作如何正常访问

    1.管理员登入帐号 2.如下图,在菜单[实时状态]-[上网行为监控]中,搜索指定IP的行为记录,找到被拒绝的数据 3.如下图,在菜单[系统管理]-[全局排除地址]中,增加不过滤的地址并提交即可  

  9. 面象对象设计原则之六:迪米特原则(LeastKnowledge Principle, LKP)

    迪米特法则来自于1987年美国东北大学(Northeastern University)一个名为“Demeter”的研究项目.迪米特法则又称为最少知识原则(LeastKnowledge Princip ...

  10. oracle小知识点

    一 . procedure和function: procedure和function在语法上几乎完全一样,使用上却有小小的差别, procedure可以单独的调用 在命令行直接exec pro_xxx ...