• 洛谷 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 }
  • 相关阅读:
    基于JSP+SERVLET的新闻发布系统(三)
    linux date
    试论知识工作者的任务分析
    SRM 577 Div II Level Two: EllysRoomAssignmentsDiv2
    UNIX环境高级编程——TCP/IP网络编程
    是时候抛弃web.xml了?
    使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控--转
    spring-security-oauth2注解详解
    一张图了解javaJwt
    nginx假死导致的问题回顾
  • 原文地址:https://www.cnblogs.com/chuyds/p/10982022.html
Copyright © 2020-2023  润新知