[codevs1766]装果子
来源:互联网 发布:普法网络知识竞赛答题 编辑:程序博客网 时间:2024/05/16 18:58
题目描述 Description
果园里有n颗果树,每棵果树都有一个编号i(1≤i≤n)。小明已经把每棵果树上的果子都摘下来堆在了这棵树的下方,每棵树下方的果子体积为ai。
现在小明将拿来m个袋子把这些果子都装进袋子里。每个袋子的体积为v。小明会按照如下规则把果子装进袋子里:
(a)从第1棵果树开始装起,由1到n一直装到第n棵果树。
(b)如果这棵果树下的果子能全部装进当前这个袋子,就装进去;如果不能,就关上当前这个袋子,打开一个新的袋子开始装。
输入描述 Input Description
输入第1行,包含两个整数n和m。
第2行,包含n个整数ai。
输出描述 Output Description
输出仅1行,表示最小的v。
#include<iostream>#include<cstdio>#define LL long longusing namespace std;const int MAXN = 200000 + 5;LL a[MAXN],v,n,m,maxx,max1;bool check(LL x){ LL cnt = 1,now = 0; for(int i = 1;i <= n;i ++) { if(now + a[i] <= x) { now += a[i]; } else { if(a[i] > x)return false; cnt ++; now = a[i]; if(cnt > m)return false; } } return true;}int main(){ cin >> n >> m; for(int i = 1;i <= n;i ++) { cin >> a[i]; maxx += a[i]; max1 = max(max1,a[i]); } LL l = max1 - 1,r = maxx + 1; while(r - l > 1) { LL mid = l + r >> 1; if(check(mid))r = mid; else l = mid; } cout << r;}
二分时注意边界
看清数据范围
long long!
0 0
- [codevs1766]装果子
- CodeVS1766 装果子【二分答案】
- 【基础练习】【二分】codevs1766 装果子题解
- Codevs 1766 装果子
- codevs 1766 装果子
- 1766 装果子
- Codevs 1766 装果子
- codevs 1766 装果子
- 【codevs】 1766 装果子 二分
- 装果子(二分答案)
- codevs 1766 装果子(二分)
- codevs 1766 装果子 二分 解题报告
- C++——NOIP模拟题——装果子
- 水晶果子
- 新鲜果子
- 合并果子
- 合并果子
- 合并果子
- windows环境下安装magento
- Dijkstra算法入门
- 1.13 12 分数求和
- 类与对象
- lua split函数
- [codevs1766]装果子
- 为 Java EE 应用提供的 9 种 Docker 方法
- 可视区域内鼠标拖拽框
- 数据结构和算法--二叉树学习
- linux笔记之信号量
- fiddler教程
- 两个es集群部署在一台机器上不成功 已解决
- 汉诺塔算法
- 了解Ajax基础