洛谷P1046 [NOIP2005 普及组] 陶陶摘苹果

题目描述

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 1010 个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个 3030 厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

现在已知 1010 个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

输入格式

输入包括两行数据。第一行包含 1010 个 100100 到 200200 之间(包括 100100 和 200200)的整数(以厘米为单位)分别表示 1010 个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个 100100 到 120120 之间(包含 100100 和 120120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

输出格式

输出包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。

输入输出样例

输入 

100 200 150 140 129 134 167 198 200 111
110

输出

5

说明/提示

【题目来源】

NOIP 2005 普及组第一题

这道题看上去是模拟

但是它可以用递推来解决

定义a数组,a[i]代表i高度能摘到a[i]个苹果,一开始先把a[苹果的高度]+1,就是这个高度有苹果,然后每个高度为这个高度能摘到的苹果+这个高度-1能找到的苹果,最后输出a[陶陶身高+30](这里我先身高加了30)

#include <bits/stdc++.h>
using namespace std;
int main(){
	int a[2001]={0},i,b,c;
  	for(i=0;i<10;i++)
    { 	cin>>b;
		a[b]++; //b高度的苹果数+1
    }
  	cin>>c; 
  	c=c+30; // 加板凳高度
  	for(i=1;i<=251;i++)
    	a[i]=a[i]+a[i-1]; //加上板凳最大高度为i时能摘到a[i]个苹果,递推 
  	printf("%d\n",a[c]);
	return 0;
}

别忘了点赞哟!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值