bzoj 3709: [PA2014]Bohater 贪心
题目:
在一款电脑游戏中,你需要打败\(n\)只怪物(从\(1\)到\(n\)编号)。为了打败第\(i\)只怪物,你需要消耗\(d_i\)点生命值,但怪物死后会掉落血药,使你恢复\(a_i\)点生命值。任何时候你的生命值都不能降到\(0\)(或\(0\)以下)。请问是否存在一种打怪顺序,使得你可以打完这\(n\)只怪物而不死掉
所有数均\(\leq 10^5\)
题解:
首先很明显地要先收掉所有总收益为正的怪物。
顺序的话稍微\(YY\)一下就会发现是按照消耗的生命值从小到大。
那么下面考虑如何收剩下的总收益为负的怪物。
容易发现,如果我们从前往后收怪\(HP\)没有\(\leq 0\)过。
那么这个过程的逆过程也满足这个条件。
所以考虑如果提前取得所有的收益,然后倒着做这个过程。
这样就变成了收掉总收益为正的怪物的部分。
所以按照回复的\(HP\)从小到大收即为逆过程的最有策略。
(由于是逆过程,所以之前的回复即为逆过程的消耗)
所以按照回复的\(HP\)从大到小排序收取即为原过程的最有解。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
inline void read(ll &x){
x=0;char ch;bool flag = false;
while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true;
while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x;
}
#define rg register int
#define rep(i,a,b) for(rg i=(a);i<=(b);++i)
#define per(i,a,b) for(rg i=(a);i>=(b);--i)
const ll maxn = 100010;
struct Node{
ll nd,val,id;
bool vis;
Node(){vis = false;}
Node(const ll &a,const ll &b){
nd = a;val = b;vis = false;
}
}a[maxn];
inline bool cmp1(const Node &a,const Node &b){
return a.nd == b.nd ? a.val > b.val : a.nd < b.nd;
}
inline bool cmp2(const Node &a,const Node &b){
return a.val+a.nd > b.val+b.nd;
}
bool vis[maxn];
ll ans[maxn],cnt;
int main(){
ll n,h;read(n);read(h);
ll x,y;
rep(i,1,n){
read(x);read(y);
a[i] = Node(x,y-x);
a[i].id = i;
}sort(a+1,a+n+1,cmp1);
rep(i,1,n){
if(h > a[i].nd && a[i].val >= 0){
h += a[i].val;
ans[++cnt] = a[i].id;
a[i].vis = true;
}
}
rep(i,1,n) if(a[i].vis == false && h <= a[i].nd){
puts("NIE");return 0;
}
sort(a+1,a+n+1,cmp2);
rep(i,1,n) if(a[i].vis == false){
if(h > a[i].nd){
h += a[i].val;
ans[++ cnt] = a[i].id;
a[i].vis = true;
}else{
puts("NIE");
return 0;
}
}
puts("TAK");
rep(i,1,cnt){
printf("%lld",ans[i]);
if(i != cnt) putchar(' ');
else putchar('\n');
}
return 0;
}
bzoj 3709: [PA2014]Bohater 贪心的更多相关文章
- 【贪心】bzoj 3709:[PA2014]Bohater
3709: [PA2014]Bohater Time Limit: 5 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 653 Solved: ...
- BZOJ 3709: [PA2014]Bohater
3709: [PA2014]Bohater Time Limit: 5 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1050 Solved: ...
- BZOJ 3709 [PA2014]Bohater:贪心【反过来考虑】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3709 题意: 在一款电脑游戏中,你需要打败n只怪物(从1到n编号). 为了打败第i只怪物, ...
- bzoj 3709: [PA2014]Bohater【贪心】
先打能回血的,按消耗从小到大打: 然后按回血量降序打剩下的(把消耗和回血反着看就是上一种怪,打法一样): 中间体力小于0就输出无解 #include<iostream> #include& ...
- 【BZOJ 3709: [PA2014]Bohater】
首先,这是我n久之前培训的时候老师讲的题目了,今天突然看到,那就讲讲吧. 首先,我们考虑怎么打怪... 显然,我们需要保证这个怪要尽可能的打死(就是尽量不被干死),并且保证尽可能的净获得血量大的在前面 ...
- 3709: [PA2014]Bohater
3709: [PA2014]Bohater 或者:Bohater 题解 好狠啊这个题 z 要开 long long ,可能算掉血回血的时候会爆 long long 吧 首先把能回血的怪打死(不然你后面 ...
- 【BZOJ】3709: [PA2014]Bohater(贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=3709 很水的题...但是由于脑洞小..漏想了一种情况.. 首先显然能补血的先杀.. 然后杀完后从补血 ...
- 【BZOJ4619/3709】[Wf2016]Swap Space/[PA2014]Bohater 贪心
[BZOJ4619][Wf2016]Swap Space Description 你有许多电脑,它们的硬盘用不同的文件系统储存数据.你想要通过格式化来统一文件系统.格式化硬盘可能使它的容量发生变化.为 ...
- BZOJ 3716 [PA2014]Muzeum 贪心SET最大闭合子图
看上去像是一个最大权闭合子图裸题但是数据太大 我们可以先把守卫的视野转换到第二象限(每个守卫可以看到横坐标比他小 纵坐标比他大的宝物) 然后按X从小到大 再按Y从大到小排 这样我们就可以按SORT序遍 ...
随机推荐
- asp.net 移除Server, X-Powered-By, 和X-AspNet-Version头
我们在开发Asp.net中,最后部署在IIS上. 然后发送HTTP请求,返回的HTTP头中包含Server, X-Powered-By, 和 X-AspNet-Version信息. 这些信息有时给攻击 ...
- Qt移植对USB鼠标键盘、触摸屏的支持
.USB键盘 经过一番搜索,发现对Qt键盘的支持主要关系到两个方面: 1. 键盘类型确定: 4.7以前的Qt版本,如果是PS2圆孔键盘,Qt编译时需加上选项:-qt-kbd-vr41xx(未测试):如 ...
- 每日练习level-7
1.有序列表.无序列表.自定义列表如何使用?写个简单的例子.三者在语义上有什么区别?使用场景是什么? 能否嵌套? 有序列表是一列使用数字进行标记的项目,它使用<li>包含于<ol&g ...
- R语言的输出函数cat,sink,writeLines,write.table
根据输出的方向分为输出到屏幕和输出到文件. 1.cat函数即能输出到屏幕,也能输出到文件. 使用方式:cat(... , file = "", sep = " " ...
- matplotlib模块之plot画图
关于matplotlib中一些常见的函数,https://www.cnblogs.com/TensorSense/p/6802280.html这篇文章讲的比较清楚了,https://blog.csdn ...
- Redis 高级实用特性
1.安全性 设置客户端连接后进行任何其他操作前先验证密码. 因为Redis速度相当快,所以在一台比较好的服务器下,一个外部用户可以在一秒钟进行150K次的密码尝试,这意味着需要指定一个非常强大的密码来 ...
- Linux 基本命令___0002
来源:https://mp.weixin.qq.com/s/DmfpDfWpWRV3EDItDdYgXQ #配置vim #http://www.cnblogs.com/ma6174/archive/2 ...
- 电子商务的几种模式,b2b,c2c等
B2B(Business to Business) ——这是指商家与商家建立的商业关系.(最早的一种模式) C2C (Customer to Consumer) ——个人与个人的商业关系,也就是消费者 ...
- BZOJ3672/UOJ7 [Noi2014]购票
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- ANT+JMETER集成1(生成报告)
配置build.xml文件时,网上找了各种版本的代码都会报错, 终于找到个可以生成报告的build源码了 链接: http://www.cnblogs.com/hanxiaomin/p/6731810 ...