问题:

摘枇杷

时间限制: 2000 ms  |  内存限制: 65535 KB
难度: 3
描述

理工学院的枇杷快熟了,ok,大家都懂得。而且大家都知道,学校的枇杷树都是一列一列的。现在小Y同学已经在筹划怎么摘枇杷了。现在我们假设有一列枇杷树,而且每棵枇杷树上枇杷果的数量小Y都已经知道了。

假设现在有n棵枇杷树,小Y可以把这n棵枇杷树分成m组,每组枇杷果的数量是这组内每棵枇杷树上枇杷果数量的和。注意,每组的枇杷树必须是连续的。(每组最少1棵树,最多n棵树)。小Y把枇杷往寝室拿的时候是一组一组拿的,所花费的力气等于这m组中枇杷果最多的那组枇杷果的数量。现在小Y想花尽量少的力气把这些枇杷果拿回寝室。

输入
多组测试数据,以EOF结束(<= 100组)
每组测试数据第一行有两个数n(n <= 1000)和m(1 <=m <= n)
第二行有n个数,分别代表每颗树上枇杷果的数量
输出
输出小Y同学所花费的最小的力气,每个结果占一行。
样例输入
3 2
1 2 3
7 5
1 4 3 1 5 2 4
样例输出
3
5

分析:

这是一个最大值最小化的问题。

当m==1时,result==sum==a[0]+a[1]+a[2]+……+a[n-1]

当m==n时,result==max(a[]) (数组中的最大值)

当m>1&&m<n时,我们就可以通过二分搜索从max(a[]) ~ sum中枚举出m组时的最小值

代码:

#include <stdio.h>
#include <string.h>
int n, m, a[1005], sum, Max;
bool judge(int x)
{int s=0,count=0;for(int i=0; i<n; i++)if(s+a[i]>x){count++;s=a[i];if(count>m-1) //当count==m时,而i<n, 则当每次运送x时,m组内运不完 return false;}elses += a[i];return true; //每次运送x时,m组内就能运完
}
int get_ans()
{int l=Max, r=sum; //n==m时,最大为Max,当m==1时,最大为sum while(l<=r){int mid = (l+r)/2;if(judge(mid)) r = mid-1;else l = mid+1;}return l;    //当从while中退出时,最后一次操作是r=mid-1,原本的l<=r不再满足 ,所以l才是所要求的值
}
int main()
{while(~scanf("%d%d", &n, &m)){memset(a,0,sizeof(a));Max=0; sum=0;for(int i=0; i<n; i++){scanf("%d", &a[i]);sum += a[i];Max = Max>a[i]?Max:a[i];}printf("%d\n", get_ans());} return 0;
}

贪心算法之——摘枇杷(nyoj680)(贪心+二分搜索)相关推荐

  1. nyoj 680 摘枇杷(二分+贪心)

    摘枇杷 时间限制: 2000 ms  |  内存限制: 65535 KB 难度: 3 描述 理工学院的枇杷快熟了,ok,大家都懂得.而且大家都知道,学校的枇杷树都是一列一列的.现在小Y同学已经在筹划怎 ...

  2. 贪心算法设计作业调度c语言,贪心算法 - 数据结构与算法教程 - C语言网

    1.简介 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解. 贪心算法不是对所有问题都能得到整体最优 ...

  3. 贪心算法 0-1背包c语言,贪心算法0-1背包问题(算法实验代码).pdf

    . 实验三. 0-1 背包问题(贪心算法) 实验代码: #include int max(int a,int b) { if(a>b) return a; else return b; } vo ...

  4. 贪心算法的全部讲解(贪心选择性和贪心子结构)

    贪心算法 贪心算法的基本概念 贪心算法的适用范围 贪心算法的设计步骤 贪心算法的题目讲解 贪心算法的基本概念 贪心算法与枚举法的不同之处在于每个子问题都选择最优的情况,然后向下继续进行,且不能回溯,枚 ...

  5. 最优装载c语言贪心算法,最优装载(贪心算法)

    算法设计例题:最优装载(贪心) memory limit: 32768KB    time limit: 1000MS accept: 24    submit: 68 Description 有一批 ...

  6. 拜托,别再问我贪心算法了!

    来自:码海 前言 上篇一文学会动态规划解题技巧 被不少号转载了,其中发现有一位读者提了一个疑惑,在求三角形最短路径和时,能否用贪心算法求解.所以本文打算对贪心算法进行简单地介绍,介绍完之后我们再来看看 ...

  7. 三十六、贪心算法--集合覆盖问题

    一.贪心算法介绍 1.贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解 2.贪心算法不是对所有问题都 ...

  8. python【蓝桥杯vip练习题库】BASIC-19完美的代价(贪心算法)

    试题 基础练习 完美的代价 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串, ...

  9. 五大常用算法之三:贪心算法

    一.基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解. 贪心算法没有固定的算法框架,算法设计的关键 ...

最新文章

  1. Socket网络编程(2)--服务端实现
  2. Mysql8 InnoDB Cluster Shell Router HA配置图解
  3. 玩转Linux必备知识(四)
  4. 想对你说的话,就在这里!
  5. 数据库“裸奔”再引祸端:VOIPO数百万呼叫和短信日志流出
  6. MySQL实验7存储过程_mysql的总结7--存储过程-阿里云开发者社区
  7. python做马尔科夫模型预测法_用Python实现马尔可夫链蒙特卡罗
  8. leetcode python3 简单题189. Rotate Array
  9. 中国凉亭行业市场供需与战略研究报告
  10. Qt使用MSVC编译器关闭“warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失”警告的方法
  11. 防范ARP网关欺骗, ip mac双向绑定脚本
  12. The program 'roscore' is currently not installed. You can install it by typing: sudo apt install pyt
  13. vue activated,deactivated生命周期的使用
  14. python数据按照分组进行频率分布_python实现读取类别频数数据画水平条形图案例...
  15. css实现元素翻转(不是旋转)
  16. 企业二维码故障报修的过程演示
  17. 地图上如何量方位角_地图投影怎么做到按条件(等角、等面积、等距)投影的?...
  18. 【技术】Word文档毕业论文技巧:如何编辑页眉和页脚
  19. css profile填写攻略,仅使用html和css制作炫酷的Profile界面
  20. Edxposed学习研究(四)Magisk(面具)源码下载编译详细实战教程

热门文章

  1. 嘉定区专利产业化项目认定条件及流程解读
  2. word2003插入自选图形外面长方形边框的显示和隐藏
  3. 机器学习 之 线性回归 选择题总结
  4. 百度云视频利用chrome进行倍速播放
  5. 【欧姆龙控制器NX1系列调研】
  6. php获取百度搜索的关键词,php获取从百度搜索进入网站的关键词
  7. 如何设置App的启动图
  8. @Scope与@RefreshScope注解
  9. Android 约束布局:ConstraintLayout GuidLine
  10. 百度回应“搜索引擎百度已死”