ZOJ 3778 Talented Chief
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3778
题目
某人做菜很厉害,一分钟能同时完成最多m个菜的一道工序,输入菜的个数n和整数m,再输入每个菜的工序数,输出最短时间。
范围:
1 <= N, M <= 40000
1 <= Ai <= 40000
Sample Input
2
3 2
2 2 2
10 6
1 2 3 4 5 6 7 8 9 10
Sample Output
3
10
题解
贪心,策略是每次选择剩余工序最多的m个菜,选其他的结果肯定不会变好,时间复杂度$\mathcal{O}(n^2\log n)$绝对超时
比如:

发现可以把这张图分成两部分,就是足够一次完成m道工序的情况和不能一次完成m道工序的情况,能一次完成m道工序很简单,直接除法就好了,剩下不能一次完成m道工序的部分

这个只是中间状态,还有能完成m道工序的部分
一直到下面这种情况

然后就发现经过的时间就等于蓝色部分的高度(只算一道菜……),因为总是从蓝色部分开始往右选择工序
设答案为和除以m
有一个问题,就是如果不能整除怎么办,为什么不能整除
不能整除说明存在黄色部分,需要加这部分高度,即答案+1
剩下黄色部分就是不能一次完成m道工序的部分(按行),因此答案是蓝色部分高度加黄色部分的高度,因为黄色部分除以m肯定小于黄色部分的高度,因此和除以m一定小于最高高度,所以这个时候可以直接让答案为最高高度
AC代码
#include<cstdio>
#include<cstring>
#include<cmath>
#define REP(r,x,y) for(register int r=(x); r<(y); r++)
#define REPE(r,x,y) for(register int r=(x); r<=(y); r++)
#define PERE(r,x,y) for(register int r=(x); r>=(y); r--)
#ifdef sahdsg
#define DBG(...) printf(__VA_ARGS__), fflush(stdout)
#else
#define DBG(...) (void)0
#endif // sahdsg
using namespace std;
typedef long long LL;
inline int max(int a, int b) {
return a>b?a:b;
}
#define MAXN 30000007
typedef long long LL;
int main() {
int t; scanf("%d", &t);
while(0<t--) {
int n,m;
scanf("%d%d", &n, &m);
int maxx=-1;
LL sum=0;
REP(i,0,n) {
int k; scanf("%d", &k);
maxx = max(maxx,k);
sum+=k;
}
LL ans=sum/m;
if(sum%m) ans++;
if(ans<maxx) ans=maxx;
printf("%lld\n", ans);
}
}
ZOJ 3778 Talented Chief的更多相关文章
- ZOJ 3778 Talented Chef(找规律,模拟计算,11届ACM省赛,简单)
题目链接 2014年浙江省赛C题,当时觉得难,现在想想这题真水.. 找规律: 若 最大的那个步骤数*m-总和>=0,那么答案就是 最大的那个步骤数 . 否则 就要另加上不够的数量,具体看代 ...
- zoj 3778 Talented Chef(思维题)
题目 题意:一个人可以在一分钟同时进行m道菜的一个步骤,共有n道菜,每道菜各有xi个步骤,求做完的最短时间. 思路:一道很水的思维题, 根本不需要去 考虑模拟过程 以及先做那道菜(比赛的时候就是这么考 ...
- ZOJ 3778 Talented Chef
题目链接 题意 : 这个人需要做n道菜,每道菜Ai步,他可以同时做M道不同的菜的其中一步,问你最少需要多少时间能做完所有的菜. 思路 : 这个题比赛的时候禁锢思路了,根本没想出来,就是当M > ...
- ZOJ 3778 Talented Chef 模拟 [ 祝愿明天省赛一帆风顺, ZJSU_Bloom WILL WIN : )
这题的意思是给你 n 道菜,第 i 道菜需要 Ai 步才能完成 每次你能对 m 道菜分别完成一步,请问最少需要几次? 这题暴力写肯定是不行的,去年省赛的时候就是没写出来这题,今天再把思路理一理吧. 首 ...
- Talented Chef ZOJ - 3778
As we all know, Coach Gao is a talented chef, because he is able to cook M dishes in the same time. ...
- ZOJ 3778 C - Talented Chef 水题
LINK:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3778 题意:有n道菜,每道菜需要\(a_i\)道工序,有m个锅可 ...
- ZOJ 3778:Talented Chef(贪心?思维)
Talented Chef Time Limit: 2 Seconds Memory Limit: 65536 KB As we all know, Coach Gao is a talented c ...
- Zoj 3781(构造)
Zoj 3781(构造) Zoj 3781 As we all know, Coach Gao is a talented chef, because he is able to cook M dis ...
- ZOJ People Counting
第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ 3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...
随机推荐
- 如何用python查看自己的电脑有几个核
今天在研究多进程的时候,如果想要充分利用多核CPU资源,最起码的一点你应该知道自己的电脑有几个核. 下面是用python3 的 os 模块来查看自己的电脑是几个核的方法. import os prin ...
- AndroidStudio集成.so遇见的问题:关于java.lang.UnsatisfiedLinkError: Native method not found
我调试的是串口程序,程序中需要继承.so文件,AndroidStudio中集成.so文件的方法是将存放.so的文件夹(通常这个文件夹名字是:armeabi)拷贝到app的libs文件夹中,然后在app ...
- 【好书推荐】《剑指Offer》之硬技能(编程题1~6)
本文例子完整源码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/sword 前一篇<[好书推 ...
- QT--电子时钟
QT--电子时钟 简介: 使用了绘图事件.定时事件,有两个窗口,一个窗口用于设置时间(主窗口),一个是时钟窗口 1.主窗口 menu.h文件: #ifndef MENU_H #define MENU_ ...
- LeetCode刷题191124
博主渣渣一枚,刷刷leetcode给自己瞅瞅,大神们由更好方法还望不吝赐教.题目及解法来自于力扣(LeetCode),传送门. 算法: 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插 ...
- SQL保留2位小数
truncate(num, 位数); );
- 基于django的个人博客网站建立(七)
基于django的个人博客网站建立(七) 前言 网站效果可点击这里访问 这次在原来的基础上添加或修改一些小功能 具体内容 1.代码高亮 在原来的blog-details.html页面添加下面的代码: ...
- IDEA快捷键用法
1.Ctrl+滑动滚轮调节窗口显示大小(需要设置之后方可) File->Settings->Editor->General->Change fontsize with Ctrl ...
- pwn-200
题目连接 https://adworld.xctf.org.cn/media/task/attachments/49bd95c78386423997fa044a9e750015 借鉴 https:// ...
- #w30 2019年大前端技术周刊
本周是2019年第30周 会议 2019年ArchSummit全球架构师峰会 2019年7月在深圳举行了ArchSummit全球架构师峰会,里面有不少关于大前端的主题可以关注. 从0到1,移动政务应用 ...