斓少摘苹果

Time Limit: 3000/3000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
Submit 
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
3 2 3 2 4
5

Hint

样例可以选 (1,3,5) (2,3,5) (1,4,5) (1,2,5) (3,4) 共5次

Source

第七届ACM趣味程序设计竞赛第二场(正式赛)
题解:

假设斓少每次都能取到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)
1.注意本题向上取整的写法,还有(sum-1+m)/m!=(sum-1)/m+1因为sum==0时值

便不同
 !!!!,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的更多相关文章

  1. cdoj 1255 斓少摘苹果 贪心

    斓少摘苹果 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1255 Descr ...

  2. 洛谷 P1478 陶陶摘苹果(升级版)

    本萌新第一次发布题解,若有不严谨处请谅解. 我看了前面几位大佬的手笔,表示自己还是比较钟爱桶排序的.它非常简易直接,还省时间,尤其对于这类题目占用的的空间也很小. 我们看到题目下面的说明:xi< ...

  3. 陶陶摘苹果(升级版)P1478_巧妙模拟

    如此水的题居然让我绞尽脑汁,我在想我是不是快退役了. 这道题我看见很多解法:贪心,背包,桶排乱七八糟一大堆. 题目 题目描述 又是一年秋季时,陶陶家的苹果树结了 n 个果子.陶陶又跑去摘苹果,这次他有 ...

  4. 武汉科技大学ACM:1007: 陶陶摘苹果

    Problem Description 厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试. 个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹 ...

  5. 洛谷-陶陶摘苹果(升级版)-BOSS战-入门综合练习1

    题目描述 Description 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. 这次与NOIp2005普及组第一题不同 ...

  6. NOIP2005-普及组复赛-第一题-陶陶摘苹果

    题目描述 Description 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳 ...

  7. noip普及组2005 陶陶摘苹果

    陶陶摘苹果 描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试. 现在 ...

  8. 2719:陶陶摘苹果-poj

    2719:陶陶摘苹果 总时间限制:  1000ms 内存限制:  65536kB 描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米 ...

  9. C语言 · 陶陶摘苹果2

    算法提高 陶陶摘苹果2   时间限制:1.0s   内存限制:256.0MB      问题描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个 ...

随机推荐

  1. Django web框架 下载安装 简单项目搭建

    什么是web应用? Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件 应用程序有两种模式C/S.B/S.C/S是客 ...

  2. 牛客 110D 矩阵

    假设$C=AB$, 那么答案就为 $\begin{align} \notag ans & =\sum\limits_{i=0}^{n-1}\sum\limits_{j=0}^{n-1}C[i] ...

  3. 推荐系统遇上深度学习(十)--GBDT+LR融合方案实战

    推荐系统遇上深度学习(十)--GBDT+LR融合方案实战 0.8012018.05.19 16:17:18字数 2068阅读 22568 推荐系统遇上深度学习系列:推荐系统遇上深度学习(一)--FM模 ...

  4. 【Opencv 源码剖析】 一、 create函数

    1. inline Mat::Mat(int _rows, int _cols, int _type) : size(&rows) { initEmpty();//将data.cols.row ...

  5. 初识JavaScript对象

    JavaScript对象语法.类型.属性 属性描述符(getOwnPropertyDescriptor().defineProperty()) [[Get]].[[Put]].Getter.Sette ...

  6. CSS模块化:less

    less的安装与基本使用 less的语法及特性 一.本地使用less的方法 Less (Leaner Style Sheets 的缩写) 是一门向后兼容的 CSS 扩展语言.是一种动态样式语言,属于c ...

  7. python 利用pyttsx3文字转语音

    # -*- coding: utf-8 -*- import pyttsx3 f = open("all.txt",'r') line = f.readline() engine ...

  8. Redis-ZSet常用命令

    Redis-ZSet常用命令 zadd key score member[{score member}-] 创建或设置指定key对应的有序集合,根据每个值对应的score来排名,升序.例如有命令 za ...

  9. 第十章、typing模块

    目录 第十章.typing模块 一.说明 二.typing模块的作用 三.使用typing模块 四.typing常用类型 第十章.typing模块 一.说明 二.typing模块的作用 类型检查,防止 ...

  10. Element 封印

    官方网站 https://element.eleme.cn/#/zh-CN 简介 Element 是一套为开发者.设计者和产品经理准备的基于Vue2.0的组件库,提供了配套的设计资源,帮助快速建立网站 ...