孤岛,隧道逃离问题(贪心+伪动态规划)
小毛驴要回家了,凭借着刚从老毛驴处学到的闪烁魔法,小毛驴信心满满地出发了。这一次它来到了另一条死亡隧道口,但是,小毛驴不知道死亡威胁随时存在,因为它所打算穿过的这条死亡隧道即将于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数组为下一波可怜娃做准备}
}
孤岛,隧道逃离问题(贪心+伪动态规划)相关推荐
- 守望者的逃离(贪心,动态规划)
题目描述: 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就 ...
- Dijkstra 贪心算法 动态规划
我认为 Dijkstra算法 的本质是 广度优先搜索, 而此处的广度是定义在路程的cost之上的. (就好比从圆心处向外扩散一个圆环,首次碰到的就是最近) 动态规划泛指,重叠子问题与原问题的推算关系( ...
- 分治、贪心、动态规划的简单理解
分治.贪心.动态规划都是要将问题划分为一个子问题,然后通过解决子问题进而求解最终问题 分治: 将问题分解为结构相似独立子问题,递归求解各个子问题,然后合并子问题的解来求解最终问题. 动态规划: 适用于 ...
- 数据结构与算法(二):排序(递归、回溯、数论、插入、希尔、归并、选择、冒泡、快排、贪心、动态规划)
算法排序:递归.回溯.数论.插入.希尔.归并.选择.冒泡.快排.贪心.动态规划 数论思想:利用数学公式或者定理或者规律求解问题: 算法思想中最难的点:递归+动态规划:树论:二叉树,红黑树 思考题: 微 ...
- DSt:数据结构的简介、最强学习路线(逻辑结构【数组-链表-栈和队列/树-图-哈希】、物理结构、数据运算【十大排序/四大查找-图三大搜索-树三大遍历】、高级算法【贪心/分治/动态规划】之详细攻略
DSt:数据结构的简介.最强学习路线(逻辑结构[数组-链表-栈和队列/树-图-哈希].物理结构[元素/关系].数据运算[十大排序/四大查找-图三大搜索-树三大遍历].高级算法[贪心/分治/动态规划]) ...
- 洛谷P1095守望者的逃离题解-伪动态规划/贪心
链接 题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很 ...
- HDU1257 最少拦截系统 贪心或动态规划
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- HDU-4310 Hero 贪心Or动态规划
这题用贪心是很容易过的,直接先杀死对方单位时间输出较高的对象. 这题的动态规划解是将N个敌人压缩到一个int数里面,dp[j] 表示在剩余了j这个数里面所蕴含的敌人的情况下的最大扣血量. dp方程为 ...
- 递归、搜索、贪心、动态规划的区别
今天从知乎看到一个很好的关于动态规划的解释,特转载到博客上. 每个阶段只有一个状态->递推: 每个阶段的最优状态都是由上一个阶段的最优状态得到的->贪心: 每个阶段的最优状态是由之前所有阶 ...
最新文章
- 金邦黑金刚4G内存 VS Vista系统
- Jenkins进阶系列之——01使用email-ext替换Jenkins的默认邮件通知
- 2017级数据结构助教批改方案
- Visual Studio 远程调试正在运行的进程
- Java日志性能那些事(转)
- php strtotime,php中strtotime什么意思
- Java selenium 读取网页
- 华为鸿蒙智慧屏_华为智慧屏X65将于4月8日发布搭载了鸿蒙OS操作系统
- enum java 判断相等_聊一聊Java的枚举enum
- 非华为PC安装华为电脑管家,免积分下载
- 计算机网络基础孟敬pdf,马来西亚主要统计指标数据.pdf
- Google Earth Engine(GEE)——估计未来人口密度(越南2100年人口预测)
- 钢铁侠c语言图片,揭秘!钢铁侠马克1型战衣原来使用了这个!
- 在Oracle中,什么是物理读和逻辑读?
- java使用SAXReader读取xml文件
- 分布式BASE理论:数据一致性模型!
- Ai发展史(个人理解)梳理
- 手淘商家累计活跃粉丝破百亿 电商进入“拼粉”时代
- 苹果CMS全新二开影视源码app源码完整版
- 从小米应用商店爬取APK文件
热门文章
- 在线编辑浏览PDF:RAD PDF 3.28
- XShell中启动Linux服务器上的run.sh时,报错 bin/sh^M: bad interpreter: No such file or directory
- photoshop制作气泡
- Java高级编程之泛型
- 在中国,营销自动化会和销售自动化一样成为一个笑话
- nyoj195 飞翔
- 一场疫情,看清了马云
- 电脑监控软件,做到实时监管
- Unity3D手游开发日记(10) - 资源打包的一些思考
- Flutter的菜鸟教程九:GridView