problem

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

solution

贪心:
1. 能回血的先杀了, 按d[i]升序防止过程死掉(反正都是加血的,反正最后的血量也是确定的)。
2. 不能回血的按a[i]降序,因为只考虑d我们要扣除的血量是一定的,为了不死显然回血多的放前面更好
3. 当前这一步的可能性也没有减少,即使补血多的耗血很多,但是由于此时血量已经是单减的了,所以若此时无法杀掉耗血多的,将来也不能。

codes

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 100010;
typedef long long LL;  //bugs
struct node{ int d, a, id; }b[maxn], c[maxn];
bool cmp1(node x, node y){ return x.d<y.d; }
bool cmp2(node x, node y){ return x.a>y.a; }
int bn, cn;
int main(){LL n, z, i;  cin>>n>>z;for(i = 1; i <= n; i++){int x, y;  cin>>x>>y;if(x <= y){++bn; b[bn].id=i; b[bn].d=x; b[bn].a=y;}else{++cn; c[cn].id=i; c[cn].d=x; c[cn].a=y;}}sort(b+1, b+bn+1, cmp1);sort(c+1, c+cn+1, cmp2);for(i = 1; i <= bn; i++){if(b[i].d<z){z = z-b[i].d+b[i].a;}else { cout<<"NIE\n"; return 0; }}for(i = 1; i <= cn; i++){if(c[i].d<z){z = z-c[i].d+c[i].a;}else { cout<<"NIE\n"; return 0; }}cout<<"TAK\n";for(i = 1; i <= bn; i++)cout<<b[i].id<<" ";for(i = 1; i <= cn; i++)cout<<c[i].id<<" ";return 0;
}

【PA2014】【BZOJ3709】Bohater(贪心,排序)相关推荐

  1. 每日四题打卡-4.15:耍杂技的牛/贪心绝对值不等式-货仓选址/贪心排序不等式-排队打水/huffman哈夫曼树-合并果子

    耍杂技的牛 具体:https://blog.csdn.net/qq_27262727/article/details/105515507 农民约翰的N头奶牛(编号为1..N)计划逃跑并加入马戏团,为此 ...

  2. BZOJ 3709: [PA2014]Bohater 贪心

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

  3. HDU 4442 Physical Examination(关于贪心排序)

    这个题目用贪心来做,关键是怎么贪心最小,那就是排序的问题了. 加入给定两个数a1, b1, a2, b2.那么如果先选1再选2的话,总的耗费就是a1 + a1 * b2 + a2; 如果先选2再选1, ...

  4. CF922D Robot Vacuum Cleaner 贪心+排序

    正确的贪心方法:按照比例排序. code: #include <bits/stdc++.h> #define N 200000 #define ll long long #define s ...

  5. 【2018icpc宁夏邀请赛现场赛】【Gym - 102222H】Fight Against Monsters(贪心排序)

    题干: It is my great honour to introduce myself to you here. My name is Aloysius Benjy Cobweb Dartagna ...

  6. 【CCCC】L3-017 森森快递 (30分),线段树rmq模板+贪心排序

    problem L3-017 森森快递 (30分) 森森开了一家快递公司,叫森森快递.因为公司刚刚开张,所以业务路线很简单,可以认为是一条直线上的N个城市,这些城市从左到右依次从0到(N−1)编号.由 ...

  7. bzoj 1634: [Usaco2007 Jan]Protecting the Flowers 护花(贪心排序)

    1634: [Usaco2007 Jan]Protecting the Flowers 护花 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 824  S ...

  8. C算法-贪心+排序+双指针

    leetcode435,无重叠区间.给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. [ [1,2], [2,3], [3,4], [1,3] ]移除1,3即可. leetcode ...

  9. 【52. 贪心 - 排序不等式(排队打水)】

    分析 当第i个人打水时,n-i个人都要在等待,i从1到n-1: 则总时间为b[1](n - 1) + b[2](n-2)+···+b[n-1]*1. 所以我们可以看出,要想让排队等待时间综合最小,一定 ...

  10. 贪心---排序不等式、绝对值不等式、推公式

    1.排序不等式 1.1排队打水 #include<iostream> #include<algorithm> #include<cstring> using nam ...

最新文章

  1. NC:南农团队解码并重构微生物群体感应系统
  2. linux与windows回车换行符的区别
  3. 上海市高校精品课程“网络安全技术”
  4. Linux命令: grep命令
  5. 被字句15个_成人高考要点解读、包含18个实用技巧
  6. POJ 2553 The Bottom of a Graph
  7. 使用layui实现后台数据表格显示时的需要修改的地方(包括后台)
  8. 抓取mooc中国随笔
  9. 51单片机教室人数进出统计检测LCD1602管显示装置红外传感器
  10. Python open和with open的区别
  11. 极光推送 java demo_android 极光推送demo
  12. Adversarial Machine Learning 经典算法解读(FGSM, DeepFool)
  13. python爬虫获取下一页_Python爬虫怎么获取下一页的URL和网页内容?
  14. 数据库死锁的预防与解除
  15. 神经网络不work该怎么办!看看这11条
  16. 程序员高效办公利器整理
  17. go语言文件写入追加
  18. 【C语言基础】那些必会的编程练习题-第二部分
  19. Elegy written in a country church-yard
  20. ORACLE全部ORA错误收集整理

热门文章

  1. 徘徊于斗牛之间 —— 星象、星宿与星座(风水)
  2. a = b(将 b 赋值给 a 的另类实现)
  3. 趣学 C 语言(七)—— 文件读写操作
  4. 复数相关的等式及证明
  5. python画3d图-Python 竟能绘制如此酷炫的三维图
  6. python是哪个专业学的-我们为什么要选择学习python?学习python有什么用?
  7. python和c语言的区别-C语言、Java语言和python语言的区别在哪里
  8. python安装-在Python中安装包的三种方法
  9. python是什么专业学的-Python开发专业学校排名是什么样的
  10. python从入门到精通需要多久-Python从入门到精通只需要一个月就够了!