QUST程序设计赛E题: 付付的繁忙生活

题目描述

这天付付刚刚打算在南苑餐厅吃饭,可是付付的BOSS打电话给他说遇到了紧急的事情叫他赶紧跑回北苑,众所周知,从南苑到北苑的路崎岖不平,有n座山丘阻挡,付付需要一一爬过去,付付需要吃点饭才能有力气跑回北苑。已知:付付吃饭每分钟可以获得e点能量,付付每攀爬一座高度为H的山丘需要消耗需要H点能量,同样的从高度为H的山丘下来可以获得H点能量,需要注意的是:

1付付饿坏了未吃饭时的能量为0;

2付付的当前能量值不能为负值(要不然他就死了)

3付付吃饭的时间一定是整数(他有严重的强迫症)

4整个行程的起点和终点高度皆为0;

给出山丘的数量n . 和 每个山丘的高度 h1h2,..., hn ;

你能告诉付付最少需要吃多久吗?

输入

输入包含多组测试数据。第一行有一个整数T,代表数据组数。

对于每组测试数据

第一行包含一个 整数n (1 ≤ n ≤ 5·105), 表示山丘的个数和一个整数e (1 ≤e ≤ 10), 表示付付一分钟能获得的能量.

第二行包含  n 个整数 h1h2,..., hn (1  ≤  hi  ≤  105) 表示 山丘的高度.

输出

对于每个测试案例首先输出 ”Case #Ti:“ Ti代表第i组测试数据
然后输出一个整数------吃饭最少需要多少分钟;

样例输入

2

5 2

3 5 3 2 5

3 1

4 4 4

样例输出

Case #1:
3
Case #2:
4
水水无极限,水水更健康
#include<iostream>
using namespace std;
int main()
{
	int maxn,temp;
	int T;
	int n,e;
	cin>>T;
	for(int i=1;i<=T;i++)
	{
		maxn=0;
		cout<<"Case #"<<T<<":"<<endl;
		cin>>n>>e;
		for(int j=1;j<=n;j++)
		{
			cin>>temp;
			if(temp>maxn)
			{
				maxn=temp;
			}
		}
		if(maxn%e==0)
			cout<<maxn/e<<endl;
		else
			cout<<maxn/e+1<<endl;
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值