bzoj-3709 PA-2014 Bohater

题目大意:在一款电脑游戏中,你需要打败n只怪物(从1到n编号)。为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药,使你恢复a[i]点生命值。任何时候你的生命值都不能降到0(或0以下)。请问是否存在一种打怪顺序,使得你可以打完这n只怪物而不死掉。

数据范围:$1\le n,Hp_{ori}\le 10^5$,$0\le d_i,a_i\le 10^5$。


想法

期望找到这样一个顺序是的打完不死掉。

我们把怪物分成两种。

第一种是打完了之后加血的,第二种是打完了之后扣血的。

第一种的话,我们按照攻击力从低到高排序这个很好理解。

第二种我们按照回写的高低排序这样的话反正左右都是打,显然最后回血越多的越优先。

最后,毋庸置疑的是先打第一种后打第二种。

代码

#include <bits/stdc++.h>
#define N 100010
using namespace std;
typedef long long ll;
char *p1,*p2,buf[100000];
#define nc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
int rd() {int x=0,f=1; char c=nc(); while(c<48) {if(c=='-') f=-1; c=nc();} while(c>47) x=(((x<<2)+x)<<1)+(c^48),c=nc(); return x*f;}
struct Node {ll atk,hp; int id;}a[N];
inline bool cmp(const Node &a,const Node &b)
{
int x=a.hp-a.atk,y=b.hp-b.atk;
if(x>=0 && y>=0) return a.atk < b.atk;
else if(x*y <= 0) return x >= 0;
else return a.hp>b.hp;
}
int main()
{
ll n=rd(),m=rd();
for(int i=1;i<=n;i++) a[i].atk=rd(),a[i].hp=rd(),a[i].id=i;
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
{
m-=a[i].atk;
if(m<=0) puts("NIE"),exit(0);
m += a[i].hp;
}
puts("TAK");
for(int i=1;i<=n;i++) printf("%d ",a[i].id);
puts("");
return 0;
}

小结:这种贪心题一定要多积累。

最新文章

  1. git-2.10.2-64-bit介绍&amp;&amp;git下载&amp;&amp;git安装教程
  2. DataBinding examples
  3. 理解Bitcode
  4. C++之路进阶——codevs1362(网络扩容)
  5. OSI模型
  6. iOS之 开发中用得到的开源github
  7. mysql同时修改2个表思路
  8. SQL查询(笔记2——实体查询)
  9. 函数buf_pool_init_instance
  10. Eclipse配置不同JDK版本遇到的一些问题与总结
  11. c++构造函数析构函数调用顺序
  12. 安装Windows2012操作系统 - 初学者系列 - 学习者系列文章
  13. 【Java框架型项目从入门到装逼】第十二节 项目分层
  14. 【Bootstrap】 typeahead自动补全
  15. 【Mybatis】MyBatis之表的关联查询(五)
  16. 疯狂Java学习笔记(75)-----------NIO.2第一篇
  17. oogle advertiser api开发概述——速率限制
  18. [UE4]获得特定类型的所有Actor:Get All Actors Of Class、Get All Actors with Interface、Get All Actors with Tag
  19. Spring总结 1.装配bean
  20. ASP.NET Core 中 HttpContext 详解与使用 | Microsoft.AspNetCore.Http 详解

热门文章

  1. C++ static关键字
  2. 【转】Java重构-策略模式、状态模式、卫语句
  3. Bootstrap历练实例:带有下拉菜单的标签和胶囊导航
  4. Log4J的配置与使用详解
  5. ios之NSURLRequest&amp;NSURLConnection
  6. Luogu P1080国王游戏(贪心)
  7. UVa-10474-大理石在哪
  8. 文件操作-dd
  9. linux设备驱动程序 - 待解决问题记录
  10. selenium.common.exceptions.WebDriverException: Message: u&#39;unknown error: cannot get automation extension\nfrom unknown error: page could not be found: chrome-extension://aapnijgdinlhnhlmodcfapnahmbfeb