小毛驴要回家了,凭借着刚从老毛驴处学到的闪烁魔法,小毛驴信心满满地出发了。这一次它来到了另一条死亡隧道口,但是,小毛驴不知道死亡威胁随时存在,因为它所打算穿过的这条死亡隧道即将于T秒时间后坍塌。

已知小毛驴行走的速度是每秒17米,而小毛驴拥有的闪烁法术可以使它在1秒内移动60米,不过每次使用闪烁法术都会消耗魔法值10点。小毛驴也掌握了魔法恢复技能,但是必须通过原地休息来实现,且魔法值恢复的速度为每秒4点。

已知小毛驴当前的魔法初值为M,死亡隧道的长度为S,隧道将于T秒时间后坍塌。

请你帮助小毛驴计算能否成功穿越隧道,若不能穿过,也请你计算小毛驴在T秒时间内能走的最远距离。

说明: 1)当前小毛驴刚刚踏入隧道口,若在T秒时间内的移动距离大于等于S米的话,就算成功。 2)小毛驴行走、闪烁或者休息均以秒为单位。

输入格式:

输入数据首先包含一个整数T(1<=T<=50),表示测试实例的个数,然后是T组测试数据。 每组测试输入包括用空格隔开的三个非负整数M,S,T。 (M<1000,S<100000000,T<300000)

出格式:

若成功穿越,则输出"Yes",然后是小毛驴穿越隧道所需的最短时间,中间用一空格分割。 若穿越失败,则输出"No" ,然后是小毛驴在 T秒内能走的最远距离,中间用一空格分割。

输入样例:

4
40 240 4
40 241 4
39 200 4
36 255 10

输出样例:

Yes 4
No 240
No 197
Yes 6

本题分析:

对于本题含有贪心思想求解:要逃离最快的话相比于走路正常人肯定会使用魔法啊,那么我们就设数组arr[i]为第i秒使用魔法能跑的最远距离,初始时魔法没有则只能停下来恢复魔法技能(因为目前我们只考虑使用魔法的最优情况)。

根据此思路我们可以初始化数组arr,接下来 进入循环判断每秒是使用魔法还是走路更合理,咱就直接上代码:

代码如下:(思路代码中给出) 

#include<bits/stdc++.h>
using namespace std;
int arr[1000000];
int main() {int t, m, s, tt;cin >> tt;while (tt--) {int  flag = 0;cin >> m >> s >> t;//魔法,路程,时间for (int i = 1; i <= t; i++) {//初始化一波(只考虑最优即使用魔法的情况)if (m >= 10) {arr[i] = arr[i - 1] + 60;m -= 10;}else {arr[i] = arr[i - 1]; m += 4;}}for (int i = 1; i <= t; i++) {arr[i] = max(arr[i], arr[i - 1] + 17);//第i秒的最优路径(使用魔法,走路)if (arr[i] >= s) {//此时的路径大于等于逃生范围则逃生成功cout << "Yes" << " " << i << endl; flag = 1; break;}}if (!flag)cout << "No" << " " << arr[t] << endl; //哦no,失败啦for (int i = 0; i <= t; i++)arr[i] = 0;//重新初始化一波arr数组为下一波可怜娃做准备}
}

孤岛,隧道逃离问题(贪心+伪动态规划)相关推荐

  1. 守望者的逃离(贪心,动态规划)

    题目描述: 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就 ...

  2. Dijkstra 贪心算法 动态规划

    我认为 Dijkstra算法 的本质是 广度优先搜索, 而此处的广度是定义在路程的cost之上的. (就好比从圆心处向外扩散一个圆环,首次碰到的就是最近) 动态规划泛指,重叠子问题与原问题的推算关系( ...

  3. 分治、贪心、动态规划的简单理解

    分治.贪心.动态规划都是要将问题划分为一个子问题,然后通过解决子问题进而求解最终问题 分治: 将问题分解为结构相似独立子问题,递归求解各个子问题,然后合并子问题的解来求解最终问题. 动态规划: 适用于 ...

  4. 数据结构与算法(二):排序(递归、回溯、数论、插入、希尔、归并、选择、冒泡、快排、贪心、动态规划)

    算法排序:递归.回溯.数论.插入.希尔.归并.选择.冒泡.快排.贪心.动态规划 数论思想:利用数学公式或者定理或者规律求解问题: 算法思想中最难的点:递归+动态规划:树论:二叉树,红黑树 思考题: 微 ...

  5. DSt:数据结构的简介、最强学习路线(逻辑结构【数组-链表-栈和队列/树-图-哈希】、物理结构、数据运算【十大排序/四大查找-图三大搜索-树三大遍历】、高级算法【贪心/分治/动态规划】之详细攻略

    DSt:数据结构的简介.最强学习路线(逻辑结构[数组-链表-栈和队列/树-图-哈希].物理结构[元素/关系].数据运算[十大排序/四大查找-图三大搜索-树三大遍历].高级算法[贪心/分治/动态规划]) ...

  6. 洛谷P1095守望者的逃离题解-伪动态规划/贪心

    链接 题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很 ...

  7. HDU1257 最少拦截系统 贪心或动态规划

    最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  8. HDU-4310 Hero 贪心Or动态规划

    这题用贪心是很容易过的,直接先杀死对方单位时间输出较高的对象. 这题的动态规划解是将N个敌人压缩到一个int数里面,dp[j] 表示在剩余了j这个数里面所蕴含的敌人的情况下的最大扣血量. dp方程为 ...

  9. 递归、搜索、贪心、动态规划的区别

    今天从知乎看到一个很好的关于动态规划的解释,特转载到博客上. 每个阶段只有一个状态->递推: 每个阶段的最优状态都是由上一个阶段的最优状态得到的->贪心: 每个阶段的最优状态是由之前所有阶 ...

最新文章

  1. 金邦黑金刚4G内存 VS Vista系统
  2. Jenkins进阶系列之——01使用email-ext替换Jenkins的默认邮件通知
  3. 2017级数据结构助教批改方案
  4. Visual Studio 远程调试正在运行的进程
  5. Java日志性能那些事(转)
  6. php strtotime,php中strtotime什么意思
  7. Java selenium 读取网页
  8. 华为鸿蒙智慧屏_华为智慧屏X65将于4月8日发布搭载了鸿蒙OS操作系统
  9. enum java 判断相等_聊一聊Java的枚举enum
  10. 非华为PC安装华为电脑管家,免积分下载
  11. 计算机网络基础孟敬pdf,马来西亚主要统计指标数据.pdf
  12. Google Earth Engine(GEE)——估计未来人口密度(越南2100年人口预测)
  13. 钢铁侠c语言图片,揭秘!钢铁侠马克1型战衣原来使用了这个!
  14. 在Oracle中,什么是物理读和逻辑读?
  15. java使用SAXReader读取xml文件
  16. 分布式BASE理论:数据一致性模型!
  17. Ai发展史(个人理解)梳理
  18. 手淘商家累计活跃粉丝破百亿 电商进入“拼粉”时代
  19. 苹果CMS全新二开影视源码app源码完整版
  20. 从小米应用商店爬取APK文件

热门文章

  1. 在线编辑浏览PDF:RAD PDF 3.28
  2. XShell中启动Linux服务器上的run.sh时,报错 bin/sh^M: bad interpreter: No such file or directory
  3. photoshop制作气泡
  4. Java高级编程之泛型
  5. 在中国,营销自动化会和销售自动化一样成为一个笑话
  6. nyoj195 飞翔
  7. 一场疫情,看清了马云
  8. 电脑监控软件,做到实时监管
  9. Unity3D手游开发日记(10) - 资源打包的一些思考
  10. Flutter的菜鸟教程九:GridView