【PA2014】【BZOJ3709】Bohater(贪心,排序)
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(贪心,排序)相关推荐
- 每日四题打卡-4.15:耍杂技的牛/贪心绝对值不等式-货仓选址/贪心排序不等式-排队打水/huffman哈夫曼树-合并果子
耍杂技的牛 具体:https://blog.csdn.net/qq_27262727/article/details/105515507 农民约翰的N头奶牛(编号为1..N)计划逃跑并加入马戏团,为此 ...
- BZOJ 3709: [PA2014]Bohater 贪心
时空隧道 分析: 这种题基本上都是贪心了- 我们考虑怎样安排才能使得自己不会死掉-QAQ-当然是生命值越大越好-所以为们应该贪心的先使自己的生命值增大再去减小生命值- 所以我们就得到了一个大概的贪心方 ...
- HDU 4442 Physical Examination(关于贪心排序)
这个题目用贪心来做,关键是怎么贪心最小,那就是排序的问题了. 加入给定两个数a1, b1, a2, b2.那么如果先选1再选2的话,总的耗费就是a1 + a1 * b2 + a2; 如果先选2再选1, ...
- CF922D Robot Vacuum Cleaner 贪心+排序
正确的贪心方法:按照比例排序. code: #include <bits/stdc++.h> #define N 200000 #define ll long long #define s ...
- 【2018icpc宁夏邀请赛现场赛】【Gym - 102222H】Fight Against Monsters(贪心排序)
题干: It is my great honour to introduce myself to you here. My name is Aloysius Benjy Cobweb Dartagna ...
- 【CCCC】L3-017 森森快递 (30分),线段树rmq模板+贪心排序
problem L3-017 森森快递 (30分) 森森开了一家快递公司,叫森森快递.因为公司刚刚开张,所以业务路线很简单,可以认为是一条直线上的N个城市,这些城市从左到右依次从0到(N−1)编号.由 ...
- bzoj 1634: [Usaco2007 Jan]Protecting the Flowers 护花(贪心排序)
1634: [Usaco2007 Jan]Protecting the Flowers 护花 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 824 S ...
- C算法-贪心+排序+双指针
leetcode435,无重叠区间.给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. [ [1,2], [2,3], [3,4], [1,3] ]移除1,3即可. leetcode ...
- 【52. 贪心 - 排序不等式(排队打水)】
分析 当第i个人打水时,n-i个人都要在等待,i从1到n-1: 则总时间为b[1](n - 1) + b[2](n-2)+···+b[n-1]*1. 所以我们可以看出,要想让排队等待时间综合最小,一定 ...
- 贪心---排序不等式、绝对值不等式、推公式
1.排序不等式 1.1排队打水 #include<iostream> #include<algorithm> #include<cstring> using nam ...
最新文章
- NC:南农团队解码并重构微生物群体感应系统
- linux与windows回车换行符的区别
- 上海市高校精品课程“网络安全技术”
- Linux命令: grep命令
- 被字句15个_成人高考要点解读、包含18个实用技巧
- POJ 2553 The Bottom of a Graph
- 使用layui实现后台数据表格显示时的需要修改的地方(包括后台)
- 抓取mooc中国随笔
- 51单片机教室人数进出统计检测LCD1602管显示装置红外传感器
- Python open和with open的区别
- 极光推送 java demo_android 极光推送demo
- Adversarial Machine Learning 经典算法解读(FGSM, DeepFool)
- python爬虫获取下一页_Python爬虫怎么获取下一页的URL和网页内容?
- 数据库死锁的预防与解除
- 神经网络不work该怎么办!看看这11条
- 程序员高效办公利器整理
- go语言文件写入追加
- 【C语言基础】那些必会的编程练习题-第二部分
- Elegy written in a country church-yard
- ORACLE全部ORA错误收集整理
热门文章
- 徘徊于斗牛之间 —— 星象、星宿与星座(风水)
- a = b(将 b 赋值给 a 的另类实现)
- 趣学 C 语言(七)—— 文件读写操作
- 复数相关的等式及证明
- python画3d图-Python 竟能绘制如此酷炫的三维图
- python是哪个专业学的-我们为什么要选择学习python?学习python有什么用?
- python和c语言的区别-C语言、Java语言和python语言的区别在哪里
- python安装-在Python中安装包的三种方法
- python是什么专业学的-Python开发专业学校排名是什么样的
- python从入门到精通需要多久-Python从入门到精通只需要一个月就够了!