贪心问题——陶陶摘苹果(升级版)

该篇文章探讨了一个关于计算陶陶在体力限制下能摘取苹果数量的问题,通过输入参数如苹果数量、椅子高度等进行分析。

陶陶摘苹果(升级版)

题目描述

又是一年秋季时,陶陶家的苹果树结了 nnn 个果子。陶陶又跑去摘苹果,这次他有一个 aaa 公分的椅子。当他手够不着时,他会站到椅子上再试试。

这次与 NOIp2005 普及组第一题不同的是:陶陶之前搬凳子,力气只剩下 sss 了。当然,每次摘苹果时都要用一定的力气。陶陶想知道在 s<0s<0s<0 之前最多能摘到多少个苹果。

现在已知 nnn 个苹果到达地上的高度 xix_ixi,椅子的高度 aaa,陶陶手伸直的最大长度 bbb,陶陶所剩的力气 sss,陶陶摘一个苹果需要的力气 yiy_iyi,求陶陶最多能摘到多少个苹果。

输入格式

111 行:两个数 苹果数 nnn,力气 sss

222 行:两个数 椅子的高度 aaa,陶陶手伸直的最大长度 bbb

333 行~第 3+n−13+n-13+n1 行:每行两个数 苹果高度 xix_ixi,摘这个苹果需要的力气 yiy_iyi

输出格式

只有一个整数,表示陶陶最多能摘到的苹果数。

样例 #1

样例输入 #1

8 15
20 130
120 3
150 2
110 7
180 1
50 8
200 0
140 3
120 2

样例输出 #1

4

提示

对于 100%100\%100% 的数据,n≤5000n\leq 5000n5000, a≤50a\leq 50a50, b≤200b\leq 200b200, s≤1000s\leq 1000s1000, xi≤280x_i\leq 280xi280, yi≤100y_i\leq 100yi100

代码实现

//由题可知,我们先可以对能够得到的apple先排序,够不到的全部不要

#include<iostream>
#include<algorithm>
#include<vector>

#define x first
#define y second

using namespace std;

typedef pair<int,int> PII;

vector<PII> w;
int n,S,a,b;

int main(){
    cin>>n>>S>>a>>b;
    for(int i=1;i<=n;i++){
        int l,r;
        cin>>l>>r;
        if(l>a+b)continue;
        w.push_back({r,l});//按照力气排序
    }
    
    sort(w.begin(),w.end());
    
    int res=0;
    for(auto q:w){
        if(S<0){
            break;
        }
        if(q.x<=S){
            S-=q.x;
            res++;
        }
    }
    cout<<res;
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

green qwq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值