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

    P1478 陶陶摘苹果(升级版)


    题目描述

    又是一年秋季时,陶陶家的苹果树结了n个果子。陶陶又跑去摘苹果,这次他有一个a公分的椅子。当他
    手够不着时,他会站到椅子上再试试。
    这次与NOlp2005普及组第一题不同的是: 陶陶之前搬凳子,力气识剩下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
    1107
    180 1
    508
    2000
    140 3
    120 2

    输出#1

    4

    说明/提示
    对于100%的数据,n≤5000,a≤50,b≤200,s≤1000,xi≤280,Yi≤100。

     1 #include<iostream>
     2 #include<algorithm>
     3 using namespace std;
     4 struct  node{
     5     double x;//高度x
     6     double y;//力气y
     7 }data[5001];
     8 bool cmp(node X,node Y){
     9     if(X.x==Y.x)
    10         return X.y<Y.y;
    11     return X.y<Y.y;
    12     
    13 }
    14 int main(){
    15     int n,s;//苹果数n<=5000,力气s<=1000
    16     int a,b;//椅子高度a<=50,伸手最大长度b<=200
    17     cin>>n>>s;
    18     cin>>a>>b;
    19     if(s<=0) {
    20         cout<<0<<endl;
    21         return 0;
    22     }
    23     for(int i=0;i<n;i++){
    24         cin>>data[i].x>>data[i].y;
    25     }
    26     sort(data,data+n,cmp);
    27     int sum=0;//摘的苹果数
    28     for(int i=0;i<n;i++){
    29         if(data[i].y>s){
    30             break;
    31         }
    32         //力气够了
    33         if(data[i].x<=(a+b)){//高度够了
    34             s-=data[i].y;
    35             sum++;   
    36         }
    37     }
    38     cout<<sum<<endl;
    39     return 0;
    40 }
    View Code
  • 相关阅读:
    mysql外键添加error1215
    shell命令获取最新文件的名称
    centos7 apache提供文件下载
    centos7 时间设置
    微服务通信的类型
    angular-cli
    npm
    模块相关
    加油!冲冲冲
    软件评测
  • 原文地址:https://www.cnblogs.com/NirobertEinteson/p/12458968.html
Copyright © 2011-2022 走看看