• 洛谷 P1478 陶陶摘苹果(升级版)【贪心/结构体排序/可用01背包待补】


    【链接】:https://www.luogu.org/problemnew/show/P1478

    题目描述

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

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

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

    输入输出格式

    输入格式:

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

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

    第3行~第3+n-1行:每行两个数 苹果高度xi,摘这个苹果需要的力气yi。

    输出格式:

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

    输入输出样例

    输入样例#1: 复制
    8 15
    20 130
    120 3
    150 2
    110 7
    180 1
    50 8
    200 0
    140 3
    120 2
    输出样例#1: 复制
    4

    说明

    所有数据:n<=5000 a<=50 b<=200 s<=1000

          xi<=280  yi<=100

    【分析】:按照花费力气从小到大排序
    【代码】:
    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int N = 5005;
    
    struct node
    {
        int x,y; //苹果高度xi,摘这个苹果需要的力气yi
    }a[N];
    
    int cmp(node a,node b)
    {
        /*
        return a.y<b.y; //花费力气从小到大
        return a.x<b.x; //苹果高度从低到高
        */ //Okay
        if(a.y!=b.y)
            return a.y<b.y;
        return a.x<b.x;
    }
    int main()
    {
        int n,s; // 苹果数n,力气s
    
        int aa,bb; // 椅子的高度a,陶陶手伸直的最大长度b
        int cnt=0;
        scanf("%d%d",&n,&s);
        scanf("%d%d",&aa,&bb);
        for(int i=0;i<n;i++)
        {
            scanf("%d%d",&a[i].x,&a[i].y);
        }
        sort(a,a+n,cmp);
        /*for(int i=0;i<n;i++)
           printf("x=%d y=%d
    ",a[i].x,a[i].y);
        */
        for(int i=0;i<n;i++)
        {
            //if(s<0) break;
            if(bb>=a[i].x)
            {
                s-=a[i].y;
                //cnt++;
                if(s<0) break;
                cnt++;
            }
            else if(bb<a[i].x)
            {
                int t=aa+bb;//站到椅子上再试试
                if(t>=a[i].x){
                  s-=a[i].y;
                  //cnt++;
                  if(s<0) break;
                  cnt++;
                }
            }
        }
        printf("%d
    ",cnt);
        return 0;
    }
    贪心
  • 相关阅读:
    vue导出Excel表格(纯前端)
    Ubuntu16.04+CUDA8.0+CUNN5.1+caffe+tensorflow+Theano
    python高级特性
    顺序容器
    感知机和支持向量机
    IO库
    字符串、向量、数组、迭代器

    c++函数
    C++语句
  • 原文地址:https://www.cnblogs.com/Roni-i/p/8272467.html
Copyright © 2020-2023  润新知