NC:「土」巨石滚滚

题目描述


帕秋莉掌握了一种土属性魔法
她使用这种魔法建造了一个大型的土球,并让其一路向下去冲撞障碍
土球有一个稳定性x,如果x < 0,它会立刻散架
每冲撞一个障碍,土球会丧失ai的稳定性,冲撞之后,又会从障碍身上回馈bi的稳定性
帕秋莉想知道,如果合理的安排障碍的顺序,在保证土球不散架的情况下,是否可以将障碍全部撞毁呢?
NC:「土」巨石滚滚

输入描述:
输入一个整数T,代表T组数据,每组数据中:
前一行两个整数n , m,表示障碍个数和土球的稳定性
接下来一行两个整数,分别表示障碍的ai和bi
输出描述:
若可以,输出“Yes”(不含引号),否则输出“No”(不含引号)

题目分析


理解成游戏打boss的过程,第一个值:打boss需要掉的血量,第二个值:击杀boss后增加血量
先打简单的能积累血量boss,再去打需要掉血的boss
对于能积累血量的boss,先去打掉血量少的boss,不断积累自身血量,
假如积累的中途有一个boss打不过,那就直接 game over ,因为在积累血量后仍然打不过,那么在不积累的情况下就更打不过了
当所有积累血量的boss打完,则开始去挑战掉血的boss,一次去打掉血量少的boss。
这里我们需要思考一个问题,我们优先打哪些障碍物呢?
举一个例子.
49 49
52 0
26 24
50 50
如果此时m=54,那应该输出Yes还是No呢。
假如我们先打丧失值最大的,那么我们选择52 0这一组,冲破之后我们的m只剩下2了,没法打其他障碍物了。
这里我们思考一下,我们是否应该先去冲破回馈最多的,然后让我们尽可能的去冲破其他的障碍物,
我们先选50 50,49 49,26 24,52 0,这样可以刚好完成任务。
如果这些障碍物丧失值足够大,我们怎样冲都不可能全部冲破,那就还不如优先去冲破回复最多的,
让我们更有可能的去冲破下一个障碍物,最大可能性的完成任务。

AC代码:

#include<bits/stdc++.h>
using namespace std;
 
typedef long long LL;
const 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值