传送门


思路很妙……

有个前提条件:血量无限,这样话肯定先打会回血的怪,再打会掉血的怪

对于会回血的怪,按照受到伤害的顺序从小往大打

对于会掉血的怪似乎并不是很好搞,考虑:将每一时刻的血量函数画出来,然后反过来看(从右往左看这个函数),就相当于回血量和掉血量互换,会掉血的怪会变成会回血的怪。因为最终的血量是已知的,所以按照上面的方法再做一遍就可以了。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<cctype>
#include<algorithm>
#include<cstring>
#include<iomanip>
#include<queue>
#include<map>
#include<set>
#include<bitset>
#include<vector>
#include<stack>
#include<cmath>
//This code is written by Itst
using namespace std;inline int read(){int a = 0;char c = getchar();bool f = 0;while(!isdigit(c) && c != EOF){if(c == '-')f = 1;c = getchar();}if(c == EOF)exit(0);while(isdigit(c)){a = a * 10 + c - 48;c = getchar();}return f ? -a : a;
}#define PII pair < int , int >
#define st first
#define nd second
#define PIII pair < PII , int >
#define auto vector < PIII > :: iterator
vector < PIII > mons[2];
long long hp , End;
int N;signed main(){
#ifndef ONLINE_JUDGEfreopen("in","r",stdin);//freopen("out","w",stdout);
#endifN = read(); End = hp = read();for(int i = 1 ; i <= N ; ++i){int d = read() , a = read();a >= d ?mons[0].push_back(PIII(PII(d , a) , i)) :mons[1].push_back(PIII(PII(a , d) , i));End = End - d + a;}if(End <= 0){puts("NIE"); return 0;}sort(mons[0].begin() , mons[0].end());for(auto t = mons[0].begin() ; t != mons[0].end() ; ++t){if(hp - (*t).st.st <= 0){puts("NIE"); return 0;}hp = hp - (*t).st.st + (*t).st.nd;}sort(mons[1].begin() , mons[1].end());for(auto t = mons[1].begin() ; t != mons[1].end() ; ++t){if(End - (*t).st.st <= 0){puts("NIE"); return 0;}End = End - (*t).st.st + (*t).st.nd;}puts("TAK");for(auto t = mons[0].begin() ; t != mons[0].end() ; ++t)printf("%d " , (*t).nd);reverse(mons[1].begin() , mons[1].end());for(auto t = mons[1].begin() ; t != mons[1].end() ; ++t)printf("%d " , (*t).nd);return 0;
}

转载于:https://www.cnblogs.com/Itst/p/10585825.html

BZOJ3709 Bohater 贪心相关推荐

  1. BZOJ 3709: [PA2014]Bohater 贪心

    时空隧道 分析: 这种题基本上都是贪心了- 我们考虑怎样安排才能使得自己不会死掉-QAQ-当然是生命值越大越好-所以为们应该贪心的先使自己的生命值增大再去减小生命值- 所以我们就得到了一个大概的贪心方 ...

  2. 【PA2014】【BZOJ3709】Bohater(贪心,排序)

    problem 有n只怪 打败第i只怪物,消耗d[i]点生命值,恢复a[i]点生命值. 任何时候你的生命值都不能降到0(或0以下) 请问是否存在一种打怪顺序,使得你可以打完这n只怪物而不死掉 n &l ...

  3. BZOJ3709: [PA2014]Bohater

    BZOJ3709: [PA2014]Bohater Description 在一款电脑游戏中,你需要打败n只怪物(从1到n编号). 为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药 ...

  4. 【PA2014】【BZOJ3709】Bohater

    Description 在一款电脑游戏中,你需要打败n只怪物(从1到n编号).为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药,使你恢复a[i]点生命值.任何时候你的生命值都不能降 ...

  5. bzoj 3709: [PA2014]Bohater

    3709: [PA2014]Bohater 链接 http://www.lydsy.com/JudgeOnline/problem.php?id=3709 题面 在一款电脑游戏中,你需要打败n只怪物( ...

  6. 算法设计与分析第3章 贪心算法

    第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...

  7. 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...

    问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...

  8. Too Many Segments CF595D 贪心乱搞

    传送门! 比赛的时候没有时间写了,看看了看大佬的代码,学习学习. 一开始实验室大佬说是用差分写的,但是看了代码发现打cf的人大家都是stl狂魔! 贪心思路:区间按照左端点排序,从1~2e5遍历每一个点 ...

  9. Roundgod and Milk Tea 贪心

    这个题好像可以用一种类似与置换的贪心方法来做~ sum记为剩余奶茶,一开始sum等于奶茶和 ans记录已经喝的奶茶数 不用排序,我们就从前往后直接处理,考虑的是每一个班最多可以喝多少杯奶茶 就是从剩余 ...

  10. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码

    1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...

最新文章

  1. 看板管理大型项目-3.每日晨会
  2. 【译】.NET Core 是 .NET 的未来
  3. sh(Spring+Spring mvc+hibernate)——BaseDao.java
  4. 国家一级计算机考试模拟题2012版,2012年计算机等级考试一级上机Word模拟题2
  5. 20140505 科技脉搏 - “社交”这棵老树,依然在开着新花
  6. 运维工程师必须掌握的技巧
  7. iOS 中 #import同@class之间的区别
  8. golang中的那些坑
  9. mathtype 公式字体
  10. python-day8-循环补充
  11. 电话号码除了数字,应该允许使用文字
  12. atiny_log | LiteOS 物联网操作系统中的日志打印组件使用分享
  13. 姿态角与方向余弦矩阵 matlab,方向余弦矩阵和姿态角提取算法(矩阵)要点.ppt
  14. 【树莓派】使用VNC远程桌面
  15. java提取富文本文字_富文本中文字部分提取
  16. 董宏丽(帮别人名字作诗)
  17. 机械秒表的使用方法_浪琴 L683、L688自动上弦机械计时秒表设置方法
  18. html的时间格式转换为本地时间,将UTC日期字符串转为本地时间字符串,如@yyyy-MM-dd'T'HH:mm:ssZ转换为本地时间...
  19. windows10安装蓝牙驱动方法步骤
  20. DAWG A Defense Against Cache Timing Attacks in Speculative Execution Processors

热门文章

  1. 如果北京的房价下跌,到底能跌多少?
  2. android 获取全国地址,如何在android中获取国家代码(调用代码)?
  3. excel导入,用反射匹配字段名
  4. excel表格怎么画斜线_怎么画出漂亮的Excel表格线?
  5. python语言的就业方向_Python语言就业方向
  6. Win10修改有线网卡的MAC地址
  7. Linux下把ncsi设置成OCP模式,一种支持NCSI信号管理功能自动切换的电路及服务器的制作方法...
  8. 五十岁才考上大学的柳永,半生风流半生坎坷!
  9. 阿里云SSL证书免费申请和部署方法((DigiCert 免费版 SSL-图文教程)
  10. 怎么一台手机多人签到_人脸识别来啦!志愿汇APP最新改版!支持一个手机多个账号同时签到签退!...