洛谷-P1478-陶陶摘苹果(升级版)

陶陶摘苹果(升级版) - 洛谷


解题思路:

1.由题意得,和我们之前做过的摘苹果多了一个力气, 分析,肯定是先挑所费力气较小的苹果取摘(贪心) 并且可以够的到这个苹果的话

2. 所以创建一个结构体数组 ,包含两个变量,h和y,分 别表示苹果离地高度和摘这个苹果所费的力气

3. 然后按照力气由小到大排序,定义cmp函数 开始遍历,如果能够摘到这个苹果,并且当前的力气 大于等于摘这个苹果所需要的力气,那么sum++,并 且力气值更新,s=s-a[i].y

4. 输出sum即为所求


#include<bits/stdc++.h>
using namespace std;
struct node{
    int h,y;
}a[5005];//结构体数组,h为地面高度,y为所费力气 

bool cmp(node xx,node yy)
{
    
    return xx.y<yy.y;//按照力气从小到大排序 
}

int main()
{
    int n,s;
    cin>>n>>s;
    int c,b;
    cin>>c>>b;
    for(int i=1;i<=n;i++)
    cin>>a[i].h>>a[i].y;//分别输入苹果离地高度和所费力气 

    sort(a+1,a+n+1,cmp);//排序 

    int sum=0;//累加器 
    for(int i=1;i<=n;i++)
    {
        if(a[i].h<=c+b&&s>=a[i].y)//如果这个苹果够得到并且当前力气大于等于摘这个苹果的力气 
        {
            sum++;//苹果数加1 
            s=s-a[i].y;//减去力气 
        }
    }

    cout<<sum;
    return 0;
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值