题解:P1478 陶陶摘苹果(升级版)
sol
定义一个结构体,保存每棵树的数据,方便排序。然后根据每棵树所需的力气排序,然后循环判断即可,具体细节见代码注释。
:::info[code]{open}
#include<bits/stdc++.h>
using namespace std;
int n,s,ans;
int len,asdf;
struct node{//结构体
int x,y;//x是高度,y是力气
}a[100010];
bool cmp(node x,node y){//根据力气排序
return x.y<y.y;
}
int main(){
cin>>n>>s;
cin>>len>>asdf;
len+=asdf;//总高度
for(int i=1;i<=n;i++){
cin>>a[i].x>>a[i].y;
}
sort(a+1,a+1+n,cmp);//排序
for(int i=1;i<=n;i++){
if(a[i].x<=len&&a[i].y<=s){//高度能够到且力气足够
s-=a[i].y;//减去用掉的力气
ans++;//增加答案
}
}
cout<<ans;
return 0;
}

浙公网安备 33010602011771号