zoukankan      html  css  js  c++  java
  • 洛谷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

    思路:先将摘不到的苹果标记,其花费的力气赋值为-1,然后对力气排序,力气小并且能摘到的优先。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int main()
    {
        int n,s,a,b,count=0;
        scanf("%d%d%d%d",&n,&s,&a,&b);
        int x[5005],y[5005];
        for(int i=0;i<n;++i)
        {
            scanf("%d%d",&x[i],&y[i]);
            if(x[i]>a+b)
                y[i]=-1;
        }
        sort(y,y+n);
        for(int i=0;i<n && s>=0;++i)
        {
            if(y[i]!=-1 && s-y[i] >= 0)
            {
                ++count;
                s-=y[i];
            }
        }
        printf("%d
    ",count);
        return 0;
    }
    
  • 相关阅读:
    27. Remove Element
    列表变成字典
    1. Two Sum
    CVPR2019:What and How Well You Performed? A Multitask Learning Approach to Action Quality Assessment
    959. Regions Cut By Slashes
    118. Pascal's Triangle
    loj3117 IOI2017 接线 wiring 题解
    题解 NOI2019 序列
    题解 省选联考2020 组合数问题
    题解 Educational Codeforces Round 90 (Rated for Div. 2) (CF1373)
  • 原文地址:https://www.cnblogs.com/aerer/p/9930986.html
Copyright © 2011-2022 走看看