【题解】【洛谷P1478】【贪心】——陶陶摘苹果(升级版)

陶陶摘苹果(升级版)

通往洛谷的传送门

题目描述

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

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

现在已知 n n n 个苹果到达地上的高度 x i x_i xi,椅子的高度 a a a,陶陶手伸直的最大长度 b b b,陶陶所剩的力气 s s s,陶陶摘一个苹果需要的力气 y i y_i yi,求陶陶最多能摘到多少个苹果。

输入格式

1 1 1 行:两个数 苹果数 n n n,力气 s s s

2 2 2 行:两个数 椅子的高度 a a a,陶陶手伸直的最大长度 b b b

3 3 3 行~第 3 + n − 1 3+n-1 3+n1 行:每行两个数 苹果高度 x i x_i xi,摘这个苹果需要的力气 y i y_i yi

输出格式

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

输入输出样例

输入 #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 ≤ 5000 n\leq 5000 n5000, a ≤ 50 a\leq 50 a50, b ≤ 200 b\leq 200 b200, s ≤ 1000 s\leq 1000 s1000, x i ≤ 280 x_i\leq 280 xi280, y i ≤ 100 y_i\leq 100 yi100

1.思路解析

    一眼贪心。

    贪心策略:将苹果高度从大到小排序,每一次摘一个高度最低的苹果。

    证明最优选择问题

    注意:此题需要先把摘不到的苹果筛选掉,才能保证程序的正确性。

2.AC代码

#include<bits/stdc++.h>
using namespace std;
struct apple//储存每个苹果的信息 
{
	int x,y;
	apple(){}
	apple(int _x,int _y):x(_x),y(_y){}
}ap[5010];
bool cmp(apple a,apple b)//需要力气小的苹果优先摘下
{
	return a.y<b.y;
}
int main()
{
    int n,s,a,b,cnt=0,ans=0;
    cin>>n>>s>>a>>b;
    //贪心策略:先把摘不到的苹果筛选掉,剩下的苹果优先摘下需要力气小的
    for(int i=1;i<=n;i++)
    {
    	int x,y;
    	cin>>x>>y;
    	if(a+b>=x)//如果陶陶加板凳可以够到 
		    ap[++cnt]=apple(x,y);
	}
	sort(ap+1,ap+cnt+1,cmp);//排序 
	for(int i=1;i<=cnt&&s;i++)//遍历 
	    if(s>=ap[i].y)//如果可以摘下 
	    {
	    	s-=ap[i].y;
	    	ans++;
	    }
	    else break;
    cout<<ans;
	return 0;
}

喜欢就订阅此专辑吧!

【蓝胖子编程教育简介】
蓝胖子编程教育,是一家面向青少年的编程教育平台。平台为全国青少年提供最专业的编程教育服务,包括提供最新最详细的编程相关资讯、最专业的竞赛指导、最合理的课程规划等。本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。

欢迎扫码关注蓝胖子编程教育
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蓝胖子教编程

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

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

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

打赏作者

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

抵扣说明:

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

余额充值