3709: [PA2014]Bohater】的更多相关文章

3709: [PA2014]Bohater Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1050  Solved: 352[Submit][Status][Discuss] Description 在一款电脑游戏中,你需要打败n只怪物(从1到n编号).为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药,使你恢复a[i]点生命值.任何时候你的生命值都不能降到0(或0以下).请问是否存在一种打怪顺…
3709: [PA2014]Bohater Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 653  Solved: 220[Submit][Status][Discuss] Description 在一款电脑游戏中,你需要打败n只怪物(从1到n编号).为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药,使你恢复a[i]点生命值.任何时候你的生命值都不能降到0(或0以下).请问是否存在一种打怪顺序…
3709: [PA2014]Bohater 或者:Bohater 题解 好狠啊这个题 z 要开 long long ,可能算掉血回血的时候会爆 long long 吧 首先把能回血的怪打死(不然你后面血不够咋办) 打回血怪的顺序按照消耗血量升序排列 然后再考虑杀掉血怪 当我们杀完所有怪物,最后的体力值是确定的 然后我们倒着看,杀掉血怪的时候,我们当做将血瓶吐出来还给掉血怪,然后掉血怪把消耗的血再还给你,然后推回去,看看能不能到达杀回血怪最后的血量巅峰,所以倒着看,处理就和杀回血怪差不多了,倒着看…
http://www.lydsy.com/JudgeOnline/problem.php?id=3709 很水的题...但是由于脑洞小..漏想了一种情况.. 首先显然能补血的先杀.. 然后杀完后从补血越多的杀..(这点我之前考虑错了QAQ) 正确性显然........ #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <iostream>…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3709 题意: 在一款电脑游戏中,你需要打败n只怪物(从1到n编号). 为了打败第i只怪物,你需要消耗atk[i]点生命值,但怪物死后会掉落血药,使你恢复rec[i]点生命值. 任何时候你的生命值都不能降到0(或0以下). 请问是否存在一种打怪顺序,使得你可以打完这n只怪物而不死掉. 题解: 怪物总共分两种,一种是打完能回血的,一种是打完会掉血的. 显然,先打能回血的,再打能掉血的. 分别…
题目: 在一款电脑游戏中,你需要打败\(n\)只怪物(从\(1\)到\(n\)编号).为了打败第\(i\)只怪物,你需要消耗\(d_i\)点生命值,但怪物死后会掉落血药,使你恢复\(a_i\)点生命值.任何时候你的生命值都不能降到\(0\)(或\(0\)以下).请问是否存在一种打怪顺序,使得你可以打完这\(n\)只怪物而不死掉 所有数均\(\leq 10^5\) 题解: 首先很明显地要先收掉所有总收益为正的怪物. 顺序的话稍微\(YY\)一下就会发现是按照消耗的生命值从小到大. 那么下面考虑如何…
先打能回血的,按消耗从小到大打: 然后按回血量降序打剩下的(把消耗和回血反着看就是上一种怪,打法一样): 中间体力小于0就输出无解 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=100005; int n,t1,t2; long long z; struct qwe { int d,a,id; }a[N],b[N]; bool cmp1(c…
首先,这是我n久之前培训的时候老师讲的题目了,今天突然看到,那就讲讲吧. 首先,我们考虑怎么打怪... 显然,我们需要保证这个怪要尽可能的打死(就是尽量不被干死),并且保证尽可能的净获得血量大的在前面 但是我们注意到,题目十分友好的说出了我们只需用输出一种方案就行 所以考虑最边界的情况(即贪心) 贪心,对于怪兽可以分成两类: 一类,打完之后血量不降反升,这些怪兽按照消耗血量从小到大排序: 一类,打完之后血量不升反降,这些怪兽按照恢复血量从大到小排序. 血量上升怪一定排在血量下降怪前面,易知这种打…
3709: [PA2014]Bohater Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 339  Solved: 109[Submit][Status] Description 在一款电脑游戏中,你需要打败n只怪物(从1到n编号).为了打败第i只怪物,你需要消耗d[i]点生命值,但怪物死后会掉落血药,使你恢复a[i]点生命值.任何时候你的生命值都不能降到0(或0以下).请问是否存在一种打怪顺序,使得你可以打完这…
[PA2014]Bohater 题目大意: 有\(n(n\le10^5)\)只怪物,你的血量为\(z\).要打败第\(i\)只怪物时,你需要先消耗\(d_i\)点生命值,再恢复\(a_i\)点生命值.求一种打怪顺序,使得任意时刻\(x\ge0\). 思路: 先打能加血的怪,将\(d_i\)从小到大排序后贪心:后打会扣血的怪,将\(a_i\)从大到小排序后贪心. 源代码: #include<set> #include<cstdio> #include<cctype> in…