hyzaoia @ 2017-09-07 18:12:49
基本思想就是判断每个苹果能不能摘到,并把能摘到的按照耗费的体力排序。最后遍历能摘到的苹果
#include<cstdio>
#include<algorithm>
using namespace std;
struct appl{
int hgt,v;
}app[10005],nwapp[10005];
bool cmp(appl a,appl b){
return a.v<b.v;
};
int main(){
int n,s;
scanf("%d%d",&n,&s);
int a,b;
scanf("%d%d",&a,&b);
int h=a+b;
int t=0;
for(int i=1;i<=n;i++){
scanf("%d%d",&app[i].hgt,&app[i].v);
if(app[i].hgt>h);
else{
nwapp[++t].hgt=app[i].hgt;
nwapp[t].v=app[i].v;
}
}
sort(nwapp+1,nwapp+t+1,cmp);
int ans=0;
for(int i=1;;i++){
if(nwapp[i].v<=s){
ans++;
s-=nwapp[i].v;
}
else break;
}
printf("%d",ans);
return 0;
}
然后第四个点就RE了……