CDOJ 1255 斓少摘苹果 图论 2016_5_14
斓少摘苹果
Time Limit: 3000/3000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
Status
斓少家的院子里有N棵苹果树,每到秋天树上就会结出Fi个苹果。
苹果成熟的时候,斓少就会跑去摘苹果。
斓少摘苹果的方式非常的奇特,每次最多可以选择M个苹果并摘下来。
但是摘下来的苹果两两一定不是来自同一棵树,问斓少最少摘多少次,才能使得每个苹果都被摘下来呢?
Input
第一行输入一个数N和M(1≤M≤N≤106),代表苹果树的数量,和斓少每次最多摘多少个。
第二行输入N个数,第i个数Fi(0≤Fi≤106)代表这一棵树上一共有多少个苹果
Output
输出一个数字,表示最少选择次数
Sample input and output
| Sample Input | Sample Output |
|---|---|
5 3 |
5 |
Hint
样例可以选 (1,3,5) (2,3,5) (1,4,5) (1,2,5) (3,4) 共5次
Source
假设斓少每次都能取到m个苹果(不足m个时全取到),那么这个次数显然为Ti = (sigma(Fi)-1)/m + 1
由于对于每一天,每次都只能最多选这一棵树的一个果子,那么至少要取max(Fi)次
现在,令Gi = max(max(Fi),Ti)
现在证明是可以在Gi次取完的 ,Ti是下界。
我们现在把模型转换成把N个宽度为1,长度分别的Gi,颜色为i的矩形。
每个矩形拆分成Fi个1*1的矩形,填充至一个m*Gi的矩形内(可以不填满),满足在Gi行中,每一行都没有同样的颜色矩形
我们从第一列,第一种颜色开始填充,每当这一列填满(即高度到达Gi)时填充下一列,如果该颜色用完就换下一种颜色。
现在证明,这样可以保证每行都不会有同一种颜色。
对于每一种颜色i,由于Gi>=max(Fi)>=Fi,那么任意一种颜色最多在相邻的两列中出现。
如果只在一列中出现,显然都在不同一行。
如果在相邻的两列,那么一列填充到了顶部,下列从最底部开始。设一列填充了ai个,下列填充了bi个,显然当且仅当ai+bi>Gi时才会出现在同一行的情况,但又有ai+bi=Fi<=max(Fi)<=Gi,所以也不会在同一行出现。
于是我们证明,斓少可以在Gi次选完所有的果子。
所以答案为 max( Ti , max(Fi) ),时间复杂度为O(N)
!!!!,t对m向上取整(t-1+m)/m;
<span style="font-size:24px;color:#3333ff;">#include <iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
#include<cstring>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
int a[1000005];
int main()
{
int n,m;
while(~scanf("%d %d",&n,&m))
{
ll sum=0,f=0,maxn=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
if(a[i]>maxn)
maxn=a[i];
}
if(maxn>(sum-1+m)/m)
f=maxn;
else
f=</span><span style="font-size:24px;color:#ff0000;">(sum-1+m)/m;</span><span style="font-size:24px;color:#3333ff;">
printf("%lld\n",f);
}
return 0;
}</span><span style="color: rgb(51, 51, 51); font-size: 14px;">
</span>
CDOJ 1255 斓少摘苹果 图论 2016_5_14的更多相关文章
- cdoj 1255 斓少摘苹果 贪心
斓少摘苹果 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1255 Descr ...
- 洛谷 P1478 陶陶摘苹果(升级版)
本萌新第一次发布题解,若有不严谨处请谅解. 我看了前面几位大佬的手笔,表示自己还是比较钟爱桶排序的.它非常简易直接,还省时间,尤其对于这类题目占用的的空间也很小. 我们看到题目下面的说明:xi< ...
- 陶陶摘苹果(升级版)P1478_巧妙模拟
如此水的题居然让我绞尽脑汁,我在想我是不是快退役了. 这道题我看见很多解法:贪心,背包,桶排乱七八糟一大堆. 题目 题目描述 又是一年秋季时,陶陶家的苹果树结了 n 个果子.陶陶又跑去摘苹果,这次他有 ...
- 武汉科技大学ACM:1007: 陶陶摘苹果
Problem Description 厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试. 个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹 ...
- 洛谷-陶陶摘苹果(升级版)-BOSS战-入门综合练习1
题目描述 Description 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. 这次与NOIp2005普及组第一题不同 ...
- NOIP2005-普及组复赛-第一题-陶陶摘苹果
题目描述 Description 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳 ...
- noip普及组2005 陶陶摘苹果
陶陶摘苹果 描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试. 现在 ...
- 2719:陶陶摘苹果-poj
2719:陶陶摘苹果 总时间限制: 1000ms 内存限制: 65536kB 描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米 ...
- C语言 · 陶陶摘苹果2
算法提高 陶陶摘苹果2 时间限制:1.0s 内存限制:256.0MB 问题描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个 ...
随机推荐
- drf-更新四大接口-单改整体-单改局部-群改整体-群改局部-04
目录 复习 基于前一天序列化基础 整体单改 单与整体局部修改 复习 """ 1.ModelSerializer序列化类 models.py class BaseModel ...
- 计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践
计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践 2018年06月13日 16:38:11 轻春 阅读数 6004更多 分类专栏: 机器学习 机器学习荐货情报局 版 ...
- 大数据学习(3)- redis集群
安装方法摘自 http://www.redis.cn/topics/cluster-tutorial.html 这个方法为简单版的方法,在原文的基础上,我加了一点参数,其他参数配置可以请教其他大神 搭 ...
- C 中 char、signed char 和 unsigned char 的区别
C 中 char.signed char 和 unsigned char 的区别 来源:http://bbs.chinaunix.net/thread-889260-1-1.html 参考:https ...
- JS基础_代码块
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- (二)创建基于maven的javaFX项目
首先使用IDEA创建一个javaFX项目 点击finish,这就创建完成了JavaFX项目,只有将其转换为maven项目即可,如图:
- Markdown之基础语法
Markdown是一种纯文本格式的标记语言.通过简单的标记语法,它可以使普通文本内容具有一定的格式 优点: 1.因为是纯文本,所以只要支持Markdown的地方都能获得一样的编辑效果,可以让作者摆脱排 ...
- IIS 6.0 PUT上传 任意文件创建漏洞
IIS 6.0 PUT上传 任意文件创建漏洞 require 1.IIS Server在Web服务扩展中开启了WebDAV. 2.IIS配置了可以写入的权限,包括网站 1.根目录 2.子文件夹 3.i ...
- js小功能2:切换
HTML: <div id="tb"> <ul><li class="on">房产</li><li> ...
- 创建LEANGOO账号
转自:https://www.leangoo.com/leangoo_guide/leangoo_guide_login.html#toggle-id-2 Leangoo采用SaaS模式运行,通过邮箱 ...