zoukankan      html  css  js  c++  java
  • 洛谷 P1478 陶陶摘苹果(升级版)

    题目数据范围小,开两个数组手写冒泡应该也能过,不过和之前在牛客上的一题类似用结构体数组就好了,主要是注意用结构体数组的排序

    题目

    题目描述

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

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

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

    n<=5000 a<=50 b<=200 s<=1000

    输入输出格式

    输入格式:

    第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 <bits/stdc++.h>
     2 
     3 using namespace std;
     4 const int N = 5000 + 10;
     5 int n, s, a, b, ans;
     6 
     7 struct app
     8 {
     9     int x;
    10     int y;
    11 }c[N];
    12 
    13 bool cmp(app aa, app bb) //结构体排序
    14 {
    15     return aa.y < bb.y;
    16 }
    17 
    18 int main()
    19 {
    20     cin >> n >> s >> a >> b;
    21     for(int i = 0; i < n; i ++ )
    22         scanf("%d%d",&c[i].x,&c[i].y);
    23         
    24     sort(c, c+n, cmp);
    25     for(int i = 0; i < n; i ++ )
    26     {
    27         if(c[i].x <= (a + b))
    28         {
    29             s -= c[i].y;
    30             if(s < 0)  break;
    31             ans ++ ;
    32         }
    33     }
    34     cout << ans;
    35     return 0;
    36 }
  • 相关阅读:
    BZOJ 1800 [Ahoi2009]fly 飞行棋
    BZOJ 3309 DZY Loves Math
    CAS Server和client 实现单点登录
    单点登录原理与简单实现
    Maven插件
    win10安装最新nexus-3.x及maven简单配置介绍
    oracle获取表的属性,包括字段,注释
    java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一
    深入理解Tomcat虚拟目录
    环境搭建系列-系统安装之centos 6.5安装与配置
  • 原文地址:https://www.cnblogs.com/chuyds/p/10982022.html
Copyright © 2011-2022 走看看