题目描述:
这天付付刚刚打算在南苑餐厅吃饭,可是付付的BOSS打电话给他说遇到了紧急的事情叫他赶紧跑回北苑,众所周知,从南苑到北苑的路崎岖不平,有n座山丘阻挡,付付需要一一爬过去,付付需要吃点饭才能有力气跑回北苑。已知:付付吃饭每分钟可以获得e点能量,付付每攀爬一座高度为H的山丘需要消耗需要H点能量,同样的从高度为H的山丘下来可以获得H点能量,需要注意的是:
1付付饿坏了未吃饭时的能量为0;
2付付的当前能量值不能为负值(要不然他就死了)
3付付吃饭的时间一定是整数(他有严重的强迫症)
4整个行程的起点和终点高度皆为0;
给出山丘的数量n . 和 每个山丘的高度 h1, h2,..., hn ;
你能告诉付付最少需要吃多久吗?
输入:
输入包含多组测试数据。第一行有一个整数T,代表数据组数。
对于每组测试数据
第一行包含一个 整数n (1 ≤ n ≤ 5·105), 表示山丘的个数和一个整数e (1 ≤e ≤ 10), 表示付付一分钟能获得的能量.
第二行包含 n 个整数 h1, h2,..., 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; }