codevs 1766 装果子

题目描述 Description
果园里有n颗果树,每棵果树都有一个编号i(1≤i≤n)。小明已经把每棵果树上的果子都摘下来堆在了这棵树的下方,每棵树下方的果子体积为ai。

现在小明将拿来m个袋子把这些果子都装进袋子里。每个袋子的体积为v。小明会按照如下规则把果子装进袋子里:

(a)从第1棵果树开始装起,由1到n一直装到第n棵果树。

(b)如果这棵果树下的果子能全部装进当前这个袋子,就装进去;如果不能,就关上当前这个袋子,打开一个新的袋子开始装。

小明希望在能把所有果子都装进袋子里的前提下,v尽量小。m个袋子并不一定都要装进果子。

输入描述 Input Description
输入第1行,包含两个整数n和m。

第2行,包含n个整数ai。

输出描述 Output Description
输出仅1行,表示最小的v。

样例输入 Sample Input

样例1

3 3

1 2 3

样例2

5 3

1 3 6 1 7

样例3

6 3

1 2 1 3 1 4

样例输出 Sample Output
样例1

3

样例2

7

样例3

4

数据范围及提示 Data Size & Hint
【输入输出样例解释1】

每个袋子的体积为3即可。前2棵果树的果子装在第一个袋子里,第3棵果树的果子装在第二个袋子里。第三个袋子不用装了。

【输入输出样例解释2】

每个袋子的体积为7即可。前2棵果树的果子装在第一个袋子里,此时第一个袋子已经装了4单位体积的果子,第3棵果树的果子装不下了,所以装进第二个袋子里,第4棵果树的果子刚好装进第二个袋子,第5棵果树的果子装进第三个袋子里。

【输入输出样例解释3】

每个袋子的体积为4即可。前3棵果树的果子装在第一个袋子里,第4~5棵果树的果子装在第二个袋子里,第6棵果树的果子装在第三个袋子里。

【数据范围】

对于40%的数据,0 < m ≤n ≤1,000,0 < ai≤ 1,000;

对于70%的数据,0< m ≤n ≤ 100,000,0< ai≤100,000;

对于100%的数据,0 < m ≤ n ≤ 100,000,0< ai≤ 1,000,000,000。

思路:二分寻找最大值最小

题解:

#include<iostream>
#include<cstdio>
using namespace std;
long long n,m;
long long maxn;
long long a[100000+10];
bool check(long long mid)
{long long sum=0;long long tot=1;//注意袋子没装满也会占掉一个袋子for(long long i=1;i<=n;i++){sum+=a[i];if(sum>mid)//袋子装满了就加一个袋子{sum=0;sum+=a[i];tot++;if(tot>m){return 0;}}}return 1;
}
int main()
{scanf("%lld%lld",&n,&m);for(long long i=1;i<=n;i++){scanf("%lld",&a[i]);maxn=max(maxn,a[i]);}long long l=maxn,r=100000000000000,mid;//maxn一定要开大,数据非常坑。long long ans=100000000000000+10;while(l<=r){mid=(l+r)/2;if(check(mid)){r=mid-1;ans=min(ans,mid);//最大值最小}else{l=mid+1;}}printf("%lld",ans);return 0;
}

转载于:https://www.cnblogs.com/-feather/p/7779966.html

codevs 1766 装果子相关推荐

  1. CodeVS 1063 合并果子

    http://codevs.cn/problem/1063/ 堆结构的上手测试题. 之前学堆的时候写过一个模板,直接拿过来用. #include<cstdio> #include<i ...

  2. 课文果园机器人这篇课文什么的果子_24* 果园机器人教案1

    共1课时 24* 果园机器人 小学语文       人教2001课标版 1教学目标 1.正确流利地朗读课文. 2.了解果园机器人的基本情况,引起对机器人的兴趣,培养独立阅读的能力. 3.激发学生对机器 ...

  3. 果园机器人能干什么_24* 果园机器人优秀教学实录

    共1课时 24* 果园机器人 小学语文       人教2001课标版 1教学目标 1.能正确.流利.有感情地朗读课文. 2.读懂课文内容,了解文中所介绍的果园机器人是怎样的. 3.培养学生热爱科学的 ...

  4. 果园机器人能干什么_《果园机器人》教案

    <果园机器人>教案 24*<果园机器人>教学设计 教学目标: 1.正确流利地朗读课文. 2.了解果园机器人的基本情况,引起对机器人的兴趣,培养独立阅读的能力. 教学重难点: 了 ...

  5. 果园机器人能干什么_24* 果园机器人ppt配用优秀获奖教案

    共1课时 24* 果园机器人 小学语文       人教2001课标版 1教学目标 1:读懂课文,了解果园机器人的基本特点. 2:给学生独立阅读的空间,展现自我的机会,锻炼从文本中捕捉重要信息的能力: ...

  6. 果园机器人反思稿_语文《果园机器人》教学反思

    语文<果园机器人>教学反思 身为一名人民教师,课堂教学是重要的任务之一,教学的心得体会可以总结在教学反思中,怎样写教学反思才更能起到其作用呢?以下是小编收集整理的语文<果园机器人&g ...

  7. Contest_5 0612 By lhq

    题目来源:学军中学NOIP2013提高组原创模拟题day1 https://wenku.baidu.com/view/c766b6b7915f804d2a16c141.html?from=search ...

  8. 果园机器人的课文_《果园机器人》

    一.导入 1.孩子们,今天老师给大家带来几张图片,让我们一起来看一看吧! 2谁来说说你都看到了什么? (评:嗯,你看得可真仔细!这些的确都是机器人.板书:机器人) 今天金老师要带你们去认识一些在果园里 ...

  9. VS Code简单使用git版本控制工具管理代码

    前提准备工作: 本文是基于已经安装了git的基础上再使用VS Code对git简单使用的,如果打开一个已经用git管理的项目的话,你会发现项目的根目录里面出现一个 .git文件,如下图. 灰色文件夹. ...

最新文章

  1. 置换 ---- 2020-2021 ICPC NERC 的 K. King‘s Task[置换类型思维题]
  2. mdk编译后的HTML,[转载]keil MDK编译完成后,Program Size:
  3. Linux Kernel TCP/IP Stack — L7 Layer — 高性能网络 I/O 服务器模型
  4. Spring_Bean的作用域---和使用外部属性文件
  5. centos7安装rabbitmq简单方式
  6. [转载] 详解Java中静态方法
  7. java 发送数据_用JAVA模拟POST发送数据
  8. 辅助出售网站源码_出售网站意味着出售社区
  9. php gpg,使用 gpg 验证 php
  10. python网格搜索、贝叶斯调参实战
  11. java pojo生成_使用maven根据JSON文件自动生成Java POJO类(Java Bean)源文件
  12. NLP中embeding干了什么事?怎么干的?
  13. 华为笔试:拼音与英文互相转换python
  14. 解密利用梦网漏洞狂刷QQ币方法附工具
  15. 谈谈c++11 emplace_back
  16. 加权平均np.average()
  17. mysql top percent_SQL Server -- TOP子句/TOP Percent,IN 操作符
  18. JavaScript—箭头函数
  19. 如何替换json对象中的key
  20. python列表去掉逗号_python – Scrapy crawler,从字符串中删除逗号

热门文章

  1. 小米路由器4a刷第三方固件_小米路由器4A的断网问题初探
  2. vue seo关键词设置_网站文章中如何设置关键词才更有利于SEO优化?
  3. python执行多个py文件_【经验分享】如何同时运行多个python脚本
  4. cent os7 安装kafka_2.13-2.6.0
  5. java fx 按钮长度_JavaFX按钮
  6. java 非模态_统计图钻取的明细报表在非模态窗口中显示
  7. mysql索引的创建和删除吗_MySQL索引的创建、删除和查看
  8. 典型微型计算机的基本结构包括,第二章 微型计算机基础.doc
  9. UART通信协议(三)GPIO模拟串口
  10. C语言:有N个数从小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个数。如果不在数组中,打印“not found”。