把怪分成两类看:

一、回血>损血 则若先杀损血少的再杀损血多的,则为当前这一步提供了更高的可能性。因为血量是单增的,所以尽量用较少的血量去干♂耗血较少的怪物。

二、回血<损血 则若先杀回血多的再杀回血少的,则为下一步提供了更高的可能性。当前这一步的可能性也没有减少,因为即使回血多的损血很多,但是由于此时血量已经是单减的了,所以若此时无法杀掉损血多的,将来也不能。

ORZ TimeMachine And ZKY

 #include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
struct Point{ll x,y;int p;Point(const ll &a,const ll &b,const int &c){x=a;y=b;p=c;}Point(){}};
Point a[],b[];
int en1,en2,n;
bool cmp1(const Point &a,const Point &b){return a.x<b.x;}
bool cmp2(const Point &a,const Point &b){return a.y>b.y;}
ll hp,x,y;
int main()
{
cin>>n>>hp;
for(int i=;i<=n;i++)
{
cin>>x>>y;
if(y>x) a[++en1]=Point(x,y,i);
else b[++en2]=Point(x,y,i);
}
sort(a+,a+en1+,cmp1);
sort(b+,b+en2+,cmp2);
for(int i=;i<=en1;i++)
{
hp-=a[i].x;
if(hp<=) {puts("NIE"); return ;}
hp+=a[i].y;
}
for(int i=;i<=en2;i++)
{
hp-=b[i].x;
if(hp<=) {puts("NIE"); return ;}
hp+=b[i].y;
}
puts("TAK");
for(int i=;i<=en1;i++) printf("%d ",a[i].p);
for(int i=;i<=en2;i++) printf("%d ",b[i].p);
return ;
}

【贪心】bzoj3709 [PA2014]Bohater的更多相关文章

  1. BZOJ3709: [PA2014]Bohater

    3709: [PA2014]Bohater Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 339  Solved: ...

  2. BZOJ3709 [PA2014]Bohater 【贪心】

    题目链接 BZOJ3709 题解 贪心很显然 我们先干掉能回血的怪,当然按照\(d\)升序顺序,因为打得越多血越多,\(d\)大的尽量往后打 然后再干掉会扣血的怪,当然按照\(a\)降序顺序,因为最后 ...

  3. bzoj3709: [PA2014]Bohater(贪心)

    贪心... 可以回血的按d[i]升序防止死掉 不能回血的按a[i]降序,因为只考虑d我们要扣除的血量是一定的,为了不死显然回血多的放前面更好 #include<iostream> #inc ...

  4. bzoj3709: [PA2014]Bohater 贪心

    ~~~题面~~~ 题解: 首先有一个比较明显的策略,肯定先要把能带给自己受益的先选完,然后再以最佳状态去打那些会给自己带来损失的怪. 对于前一部分(可以带来受益的怪),显然我们需要先从代价小的打起,因 ...

  5. [bzoj3709][PA2014]Bohater_贪心

    bzoj-3709 PA-2014 Bohater 题目大意:在一款电脑游戏中,你需要打败n只怪物(从1到n编号).为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药,使你恢复a[i ...

  6. 【BZOJ-3709】Bohater 贪心

    3709: [PA2014]Bohater Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 835  Solved:  ...

  7. 【贪心】bzoj 3709:[PA2014]Bohater

    3709: [PA2014]Bohater Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 653  Solved:  ...

  8. BZOJ 3709: [PA2014]Bohater

    3709: [PA2014]Bohater Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1050  Solved: ...

  9. [PA2014]Bohater

    [PA2014]Bohater 题目大意: 有\(n(n\le10^5)\)只怪物,你的血量为\(z\).要打败第\(i\)只怪物时,你需要先消耗\(d_i\)点生命值,再恢复\(a_i\)点生命值. ...

随机推荐

  1. java md5加密 不依赖base64包

    /** * MD5 加密 */ private String getMD5Str(String str) { MessageDigest messageDigest = null; try { mes ...

  2. php 计算两个日期的间隔天数

    使用php内部自带函数实现 1.使用DateTime::diff 实现计算 参考阅读>>PHP DateTime::diff() 上代码: <?php $start = " ...

  3. webpack 配置学习笔记

    最简单的 webpack 配置 const path = require('path') module.exports = { entry: './app/index.js', output: { p ...

  4. 让VC6.0编译出来的程序支持XP样式或XP风格

    (1)VC6.0编译出来的win32程序不支持winxp样式的原因:微软WINXP系统更新了Comctl32.dll(ver 6.0)这个“XP风格”的控件.为了保留传统的Windows界面风格,特地 ...

  5. web前端 html基础2

    表单标签<form></form> input系列标签 text 文本输入框 placeholder 默认的属性,输入时消失 password 密码输入框 radio 单选框 ...

  6. python3 time、random、hashlib模块

    一.时间模块时间的几种形式:时间戳,结构化时间,字符串时间 import time print(time.time()) # 仅仅是当前时间的时间戳 float print(time.localtim ...

  7. Unordered load/store queue

    A method and processor for providing full load/store queue functionality to an unordered load/store  ...

  8. RabbitMQ消息队列(五): 主题分发

    1. 主题(Topics): fanout模式只能进行简单的广播,direct模式虽然在过滤上进行了一定的提升,但是不能支持复杂的条件, 比如我们的日志消息,现在不仅要知道消息级别,也要知道消息来源. ...

  9. ZJOI2006书架

    追yql做题记录的时候做到的……一道Splay模版题…… 啊LCT写久了都有点忘了Splay了(什么奇怪的逻辑?) 其实说白了五个操作: 1. 将某元素置顶:将元素旋到根,然后将左子树合并到该元素的后 ...

  10. 运行HelloWorld.class是报错(错误: 找不到或无法加载主类 HelloWorld.class)

    1.从毕业到现在工作了几个月了,每天都是在写一些js代码,感觉作为一个web程序员,java还是十分重要的,于是自己买了一本java书来边学边练习,然后发现自己连使用记事本来编写的HelloWorld ...