用差值排序,不能用Bi排序,该题的贪心原则则是尽可能的装入东西,即
停放体积 移动体积
第一件物品 a1 b1
停放体积 移动体积
第一件物品 a1 b1
第二件物品 a2 b2
应选择a1+b2和a2+b1中比较小的先放
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct Node
{
int a;
int b;
}node[1005];
int cmp(Node x,Node y)
{
return x.a + y.b < x.b + y.a;
}
int main()
{
int t,n,v,p;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&v,&n);
for(int i=0;i<n;i++)
scanf("%d%d",&node[i].a,&node[i].b);
sort(node,node + n,cmp);
p=1;
for(int i = 0;i < n;i++)
{
if(node[i].b > v)
{
p=0;
break;
}
v -= node[i].a;
}
if(p)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}