解题:PA 2014 Bohater
2024-08-29 11:21:08
我们把怪分成两类,打完了了能回血的和打完了不能回血的,然后分开打。
对于能回血的,我们先打攻击力低的,因为如果先打一个攻击力高的显然不一定能直接打过,所以先打一些攻击力低的回回血。
对于不能回血的,我们先打回血多的,因为如果能打完我们最后的血量是确定的,所以逆序来看相当于每次丢掉打怪回的血再加上打怪耗的血,这就和前面一样了。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
struct a
{
int id;
long long atk,hpp;
}mon1[N],mon2[N];
long long hp,t1,t2;
int n,c1,c2,outp[N];
bool cmp1(a x,a y)
{
return x.atk==y.atk?x.hpp>y.hpp:x.atk<y.atk;
}
bool cmp2(a x,a y)
{
return x.hpp==y.hpp?x.atk<y.atk:x.hpp>y.hpp;
}
int main ()
{
scanf("%d%lld",&n,&hp);
for(int i=;i<=n;i++)
{
scanf("%lld%lld",&t1,&t2);
if(t1<t2) mon1[++c1].atk=t1,mon1[c1].hpp=t2,mon1[c1].id=i;
else mon2[++c2].atk=t1,mon2[c2].hpp=t2,mon2[c2].id=i;
}
sort(mon1+,mon1++c1,cmp1),sort(mon2+,mon2++c2,cmp2);
for(int i=;i<=c1;i++)
{
if(hp<=mon1[i].atk) printf("NIE"),exit();
hp+=mon1[i].hpp-mon1[i].atk,outp[++outp[]]=mon1[i].id;
}
for(int i=;i<=c2;i++)
{
if(hp<=mon2[i].atk) printf("NIE"),exit();
hp+=mon2[i].hpp-mon2[i].atk,outp[++outp[]]=mon2[i].id;
}
printf("TAK\n");
for(int i=;i<=n;i++) printf("%d ",outp[i]);
return ;
}
最新文章
- 基于Ubuntu Hadoop的群集搭建Hive
- C# 构建动态树
- webrtc中APM(AudioProcessing module)的使用
- java学习笔记----枚举测试题
- (Array,位操作)137. Single Number II
- 在IIS中部署ASP.NET 5应用程序遭遇的问题
- [转]在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView
- LightOj 1278 - Sum of Consecutive Integers(求奇因子的个数)
- hdu 2022
- MySQL 数据库存储引擎
- [HIHO1176]欧拉路&#183;一(欧拉图判定)
- 【转载】如何将Emmet安装到到 Sublime text 3?
- kafka broker 进入 conflicted ephemeral node 死循环
- 【转】#include,#import,@class的区别
- shell脚本语法基础汇总
- MySQL存储过程的基本函数
- oracle异机恢复 open resetlogs 报:ORA-00392
- codecs and formats of digital media
- Java课程寒假之开发记账本软件(网页版)之三
- SKU与SPU
热门文章
- golang slice使用不慎导致的问题
- Servlet各版本web.xml的头文件配置模板
- 解决maven update project 后项目jdk变成1.5
- maven实战读书笔记(二)
- 事后分析报告(Postmortem Report)要求
- connect by prior id= pid start with id=&#39;1&#39; 树结构查询
- javascript中的call(),apply(),bind()方法的区别
- 软件共享平台的NABCD
- 解决getOutputStream() has alerady been called for this response
- selenium 关键字驱动部分设计思路