巨石滚滚-思维贪心

这是一篇关于解决土球稳定值问题的博客,题意是土球在遇到不同障碍时会有稳定性变化。文章介绍了贪心算法的解决方案:优先碰撞使稳定性增加的障碍,然后是使稳定性减少的障碍,通过按障碍属性排序来确保可能的最大稳定性路径。
摘要由CSDN通过智能技术生成

H 「土」巨石滚滚

题意:土球有一个稳定值m,当m<=0立即解体。每个障碍有破坏a,恢复b两个属性,当撞向一个障碍时要求a>m,稳定性损失m=m-a,撞完后然后稳定性恢复m=m+b。给出m和所有障碍的a,b,判断是否有一个可以经历所有障碍不解体的障碍出现次序。
解法:贪心。首先先去撞b-a>0的障碍,因为撞这些m会增加,m到最大后再去撞b-a<0的障碍。b-a>0:按a从小到大,这样可以保证过尽可能多的障碍。a-b:这个需要一点证明,结论是:按b从大到小。简单证明:如果答案为“yes”,最后的m一定是确定的,那么考虑逆过程,就是把恢复的稳定值吐出来再加上损失的稳定值(像不像正向的过程?),逆向就要保证m>0,且-b+a>0(和前面正向b-a>0的过程一致),所以就是按照b降序,正向就是b升序啦。

#include<bits/stdc++.h>
using namespace std;
struct ac{
   
    long long a,b,get;
}arr[500010];
bool cmp(ac a1,ac a2){
   
    if(a1.get>0&&a2
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值