Talented Chef ZOJ - 3778
也是一道有点坑的题!
题目链接:
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3778
题目大意:
有个人需要给女朋友做n道菜,他一分钟可以同时做m道菜,问需要最少的时间。
看到这个题当然贪心呀,当然一上场ceil(sum/n)当场wa掉。
(年轻人还是不能心急啊)
最后考虑情况:
1.m>=n 这种情况直接找max就OK。
2.m<n 当做ceil(sum/n)还木有做完时,直接也取max就OK。
3.m<n 的其他情况 取ceil(sum/n) 就OK;
根据图更方便理解(图是搬别人的啦)
下面是C++ AC代码
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main(){
int T;
scanf("%d",&T);
while(T--){
int N,M,k;
long long result=0;
int mx=0;
scanf("%d%d",&N,&M);
for (int i=0;i<N;i++){
scanf("%d",&k);
mx=max(mx,k);
result+=k;
}
int res=ceil(result*1.0/M);
if (mx>res||N<=M){
printf("%d\n",mx);
}
else{
printf("%d\n",res);
}
}
return 0;
}