• 周四. 5月 30th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

洛谷-陶陶摘苹果(升级版)-BOSS战-入门综合练习1

admin

11月 28, 2021
题目描述 Description
  又是一年秋季时,陶陶家的苹果树结了n个果子。陶陶又跑去摘苹果,这次她有一个a公分的椅子。当他手够不着时,他会站到椅子上再试试。
  这次与NOIp2005普及组第一题不同的是:陶陶之前搬凳子,力气只剩下s了。当然,每次摘苹果时都要用一定的力气。陶陶想知道在s<0之前最多能摘到多少个苹果。
    现在已知n个苹果到达地上的高度xi,椅子的高度a,陶陶手伸直的最大长度b,陶陶所剩的力气s,陶陶摘一个苹果需要的力气yi,求陶陶最多能摘到多少个苹果。
 输入输出格式 Input/output
输入格式:
  第1行:两个数 苹果数n,力气s。
  第2行:两个数 椅子的高度a,陶陶手伸直的最大长度b。
  第3行~第3+n-1行:每行两个数 苹果高度xi,摘这个苹果需要的力气yi。
输出格式:
只有一个整数,表示陶陶最多能摘到的苹果数。
 输入输出样例 Sample input/output
样例测试点#1
输入样例:

8 15
20 130
120 3
150 2
110 7
180 1
50 8
200 0
140 3
120 2

输出样例:

4

思路:这题很简单,不解释了,浅显易懂。O(∩_∩)O(记得要用全局变量)。

代码如下:

 1 #include<stdio.h>  
 2 int h[5002],m[5002],i=1,s,n,a,b,j=1,ans;  
 3 void kp(int l,int r)  
 4 {  
 5     int i=l,j=r,x,t;  
 6     x=m[(i+j)/2];    
 7     while(i<=j) 
 8     {  
 9         while(m[i]<x) i++;   
10         while(x<m[j]) j--;   
11         if(i<=j) 
12         {
13             t=m[i];
14             m[i]=m[j];
15             m[j]=t;
16             i++;
17             j--;
18         }  
19     }    
20     if(l<j) kp(l,j);   
21     if(i<r) kp(i,r);  
22 }   
23   
24 int main()  
25 {  
26     scanf("%d%d%d%d",&n,&s,&a,&b); 
27     for(i=1;i<=n;i++)  
28     {
29         scanf("%d%d",&h[j],&m[j]);
30         if(h[j]<=a+b)
31         {
32             j++;
33         }
34     }
35     j--;  
36     kp(1,j);  
37     for(i=1;i<=j;i++)  
38     {
39         if(m[i]<=s)
40         {
41             s-=m[i];ans++;
42         }
43     }  
44     printf("%d
",ans); 
45     return 0;  
46 }

《洛谷-陶陶摘苹果(升级版)-BOSS战-入门综合练习1》有一个想法
  1. Wow, amazing weblog layout! How lengthy have you ever been running
    a blog for? you make blogging look easy.
    The full look of your site is excellent, as well as the content material!
    You can see similar here sklep internetowy

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注