由于预知未来可能会下雨,所以小蚂蚁决定搬家。它需要将它的所有物品都搬到新
家,新家的体积为V,小蚂蚁有N件物品需要搬,每件物品的体积为Ai,但他发现:
每件物品需要新家剩余体积大于等于Bi才能使它将物品搬进新家放好,请你帮它计算它是
否能将所有物品搬进新家?
多组数据输入,每组输入V,N;接下来N行输入Ai,Bi。
(0 < V < 10000,0 < N < 1000,0 < Ai < V , Ai <= Bi < 1000.)
如果能搬进新家输出Yes,否则输出No
Raw
10 1
8 10
10 1
8 11
Raw
Yes
No
PS:贪心
AC代码:
#include<bits/stdc++.h>
using namespace std;
struct node{
int a,b,c;
};
int cmp(node x,node y)
{
if(x.c==y.c)
return x.b>y.b;
return x.c<y.c;
}
int main()
{
int v,n;
while(~scanf("%d%d",&v,&n))
{
node ss[1005];
for(int i=0;i<n;i++)
{
scanf("%d%d",&ss[i].a,&ss[i].b);
ss[i].c=ss[i].a-ss[i].b;
}
sort(ss,ss+n,cmp);
int flog=0;
for(int i=0;i<n;i++)
{
if(v>=ss[i].b)
v-=ss[i].a;
else
{
flog=1;
break;
}
}
if(!flog)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}