题目技巧:排序
题目链接:https://www.luogu.org/problemnew/show/P1478
思路:按苹果需要的体力从小到大排序,然后每次判断当前的体力是否ok,手的高度+凳子的高度是否够得着,遍历一下就ok了
代码:
#include <iostream>
#include <algorithm>
using namespace std;
int n,s;
int a,b;
struct A{
int h;
int need;
};
A arr[5050];
bool cmp(A a,A b){
return a.need<b.need;
}
int main(){
int coun = 0;
cin>>n>>s>>a>>b;
for(int i = 0;i<n;i++){
scanf("%d%d",&arr[i].h,&arr[i].need);
}
sort(arr,arr+n,cmp);
for(int i = 0;i<n && s>0;i++){
if(s >= arr[i].need && a+b >= arr[i].h){
coun++;
s-=arr[i].need;
}
}
cout<<coun;
return 0;
}