《贪心算法》— NYOJ 1309 冰法斗神龙
- 题目1309
- 题目信息
- 运行结果
- 本题排行
- 讨论区
冰法斗神龙
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
强大的冰魔法师zz一路过关闯将,终于独自一人杀到了神龙面前。神龙的血量值为HP,正常状态下每秒进行一次攻击,伤害值为DAMAGE。zz精通n种瞬发冰控魔法(在同一秒内,zz发动的冰魔法要比神龙的攻击快上一点),第i(1<=i<=n)种魔法伤害值为damage[i],并使神龙进入冰冻状态(神龙在冰冻状态下不会进行攻击,且如果神龙在冰冻状态下再次受到冰魔法的攻击,则冰冻时间累加),维持freeze[i]秒,使用完后有cd[i]秒的时间不得使用任何魔法。当zz与神龙有一方的血量值小于等于0时,即判定那一方死亡。zz想杀神龙,但是又怕死,所以请你帮他判断一下以他现有的血量hp和他的技能,能否强杀神龙。
输入
第一行输入整数T代表T组数据,T<=30
输入数据的第一行为2个整数HP(0<HP<10^8) DAMAGE (0<DAMAGE<10^8) 分别代表神龙的血量值和神龙每次的攻击值。
第二行也是2个整数hp(0<hp<10^8),n(1<=n<=1000000) 分别代表zz的血量以及zz会的魔法种类数。
第三行到n+2行每行均为3个整数damage[i](0<=damage<=100),freeze[i](0<=freeze[i]<=100),cd[i](1<=cd[i]<=100),(1<=i<=n)分别代表第i种魔法的伤害值,冰控时间,冷却时间。
输出
输出只有一行YES或NO,分别代表能杀死神龙和不能杀死神龙。
样例输入
2
20 4
10 2
3 1 2
5 0 1
20 3
10 2
3 1 2
5 0 1
样例输出
NO
YES
来源
2016广东工业大学第一次月赛
上传者
liuyuqiang
#include<bits/stdc++.h>
#define inf 0xfffff
using namespace std;
struct SD{ int bg,zg;
}b[110];
int a[110];
int da,fr,cd;
bool cmp(struct SD a,struct SD b){ return a.zg*b.bg>a.bg*b.zg;
}
int main()
{ int t; scanf("%d",&t); while(t--){ int bshp,bsda,zzhp,k,cur=0,cur1=0; scanf("%d %d",&bshp,&bsda); scanf("%d %d",&zzhp,&k); for(int i=0;i<=100;i++)a[i]=inf; for(int i=0;i<k;i++){ scanf("%d%d%d",&da,&fr,&cd); if(da)cur1=1; a[da]=min(a[da],(cd-fr)*bsda); if(fr>=cd&&cur!=1){ if(da){ cur=1; } else if(fr>cd){ cur=-1; } } } if(cur==1||cur==-1&&cur1){ printf("YES\n");continue; } int len=0; for(int i=1;i<=100;i++){ if(a[i]!=inf){ b[len].zg=i; b[len++].bg=a[i]; } } sort(b,b+len,cmp); cur=0; while(bshp>0){ int i; for(i=0;i<len;i++){ if(b[i].zg>=bshp){ bshp=0;break; } if(b[i].bg<zzhp){ zzhp-=b[i].bg; bshp-=b[i].zg; break; } } if(i==len){ cur=1; break; } } if(cur){ printf("NO\n");; } else{ printf("YES\n"); } } return 0;
}
《贪心算法》— NYOJ 1309 冰法斗神龙相关推荐
- 从贪心算法到暴力递归法——从局部最优到整体最优
从递归看动态规划 前情提要 最优问题的本质 目标函数 最优组合的求解策略 枚举 递归 斐波那契数列 问题描述 示例 解题思路 迭代 递归 深入理解递归 堆栈与递归的状态存储 递归与回溯 树形结构与深度 ...
- 1191: 冰法斗神龙 暴力枚举
1191: 冰法斗神龙 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 199 Solved: 15 Description 强大的冰魔法师zz一路过 ...
- 趣学算法系列-贪心算法
趣学算法系列-贪心算法 声明:本系列为趣学算法一书学习总结内容,在此推荐大家看这本算法书籍作为算法入门, 原作者博客链接,本书暂无免费电子版资源,请大家支持正版,更多的案例分析请查看原书内容. 第二章 ...
- C++——《算法分析与设计》实验报告——贪心算法与回溯法
实验名称: 贪心算法与回溯法 实验地点: 实验目的: 1.理解贪心算法与回溯法的概念: 2.掌握贪心算法与回溯法的基本要素: 3.掌握贪心算法与回溯法的解题步骤与算法柜架: 4.通过应用范例学习贪心算 ...
- 算法设计之—直接 遍历/穷举法、贪心算法、动态规划、回溯法、EM方法
算法是对完成特定问题的程序执行序列描述,表象为从问题初始状态到问题结束状态的所有路径之中寻找可行路径,若无先验经验,根据执行方式不同可以划分为无规则和有规则(启发式)方法. 无规则方法为穷举,改进方法 ...
- 常用算法总结(穷举法、贪心算法、递归与分治算法、回溯算法、数值概率算法)
博主联系方式: QQ:1540984562 微信:wxid_nz49532kbh9u22 QQ交流群:892023501 目录 1.穷举法 2.贪心算法 3.递归与分治算法 4.回溯算法 5.数值概率 ...
- C++——《算法分析》实验叁——贪心算法与回溯法
实验目的: 1.理解贪心算法与回溯法的概念: 2.掌握贪心算法与回溯法的基本要素: 3.掌握贪心算法与回溯法的解题步骤与算法柜架: 4.通过应用范例学习贪心算法与回溯法的设计技巧与策略: 实验原理 1 ...
- 基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题...
1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2,6],[1, ...
- 计算机算法设计与分析(第五版)---王晓冬--------前六章(递归与分治,动态规划,贪心算法,回溯法,)期末复习资料总结
--1-- 算法:解决问题的一种方法或者一个求解过程 是若干指令的序列 输入 输出 有限性 确定性 程序:用某种设计语言对算法的具体实现 可以不满足 有限性 程序 = 算法+数据结构 果子合并问题( ...
最新文章
- 只会高中数学运算就能发现算法?Google开源的AutoML-Zero有多厉害
- Ubuntu 12.04 一键安装lnmp环境
- 区块链BaaS云服务(28)TOP Network 区块链平台
- TCP/IP协议簇简介
- 远程执行漏洞修复方案_请马上修复!SaltStack远程命令执行漏洞
- 动态规划入门——第N个泰波那契数(Leetcode 1137)
- python网络编程系列
- 翁恺老师C语言学习笔记(十)指针_指针与数组
- 直线旋转动画html5,多视角3D可旋转的HTML5 Logo动画
- 基于内容的图像检索系统设计与实现
- 【梳理】离散数学 第15章 欧拉图与哈密顿图 15.3 最短路问题、中国邮递员问题与货郎担问题
- linux安装红警教程,红警2任务安装教程_红色警戒2任务安装方法一览
- Java反射创建对象效率高还是通过new创建对象的效率高?
- 2022江南大学851计算机初试考研经验分享
- [Unity插件]着色器关键字分析工具ShaderControl
- 微信摇一摇周边--获取access_token
- Altium Designer --> 电气电路
- 在工作站计算机中创建策略,禁止任何计算机访问本机 8000 端口
- 《数据结构与算法》实验:排序算法实验比较——选择排序 堆排序
- C++-c语言词法分析器