题解: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;
}
posted @ 2026-05-24 13:34  Synthx  阅读(3)  评论(0)    收藏  举报