题目链接
题意
帕秋莉掌握了一种土属性魔法
她使用这种魔法建造了一个大型的土球,并让其一路向下去冲撞障碍
土球有一个稳定性x,如果x < 0,它会立刻散架
每冲撞一个障碍,土球会丧失ai的稳定性,冲撞之后,又会从障碍身上回馈bi的稳定性
帕秋莉想知道,如果合理的安排障碍的顺序,在保证土球不散架的情况下,是否可以将障碍全部撞毁呢?
思路
- 可将障碍分为两部分,ai<=bi 按ai递增排序
- ai>bi按bi递减排序
参考代码
#include<bits/stdc++.h>
using namespace std;
struct node
{
int a,b;
};
node aa[500100];
int cmp(node a, node b)
{
if(a.b-a.a>0&&b.b-b.a>0)
return a.a<b.a;
if(a.b-a.a<0&&b.b-b.a<0)
return a.b>b.b;
return a.b-a.a>b.b-b.a;
}
int main()
{
int t;
cin>>t;
while(t--)
{
long long n,m;
cin>>n>>m;
for(int i=0; i<n; i++)
{
cin>>aa[i].a>>aa[i].b;
}
sort(aa,aa+n,cmp);
int fl=1;
for(int i=0; i<n; i++)
{
if(m<aa[i].a)
{
fl=0;
break;
}
m=m-aa[i].a+aa[i].b;
}
if(fl==1)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}