CSU1976 -搬运工小明-二分

Description

作为老人的小明非常忧伤,因为他马上要被流放到本部去了,住进全左家垅最有历史感的11舍真是一件非常荣幸的事情。
搬行李是个体力活,小明发现自己的行李太多啦,所以他决定去买很多个袋子来装走。到了超市的小明发现,不同大小的袋子居然价格一样???虽然买最大的自然最赚,但是小明是名远近闻名的环保人士,他觉得袋子只要能装下他的行李就够了,并且为了不麻烦收银的小姐姐(⊙o⊙)…,他也只会购买同一种大小的袋子。因此他希望在能装下所有行李的前提下,袋子越小越好。同时为了避免弄乱行李,小明希望同一个袋子装的是位置连续相邻的行李。
小明摸了摸口袋发现自己带的钱最多能买N个袋子,数学特别差的他不知道到底该买多大的才合适,所以想靠你来解决这个问题了。

Input

第一行为一个数字T(T<=10)表示数据组数
第二行为两个数字N(N <= 10^5)和 M(M <= 10^5)表示袋子个数和小明的行李个数
第三行为M个数字,第i个数字a[i]表示小明的第i个行李体积为a[i](0

Output

输出一行表示袋子的最小体积(整数)

Sample Input

1
3 3
1 1 1

Sample Output

1

Hint

袋子不能装下体积大于其容积的物品
多个物品满足体积之和小于等于一个袋子的容积,就能被装进

思路

看这个数据量大小,就知道用二分了。

或者直接推要用二分的话就这么想:无法想出一个能直接构造解的算法,但是对于每个可能的解,我们总是能在一个比较快的时间里确认解是否可行,而数据量又不太大,所以二分就好了

二分上界是物品权值和,下界是权值最大值

AC代码

/***************************************Source            : CSU1976*Knowledge Point   : DICHOTOMY*Author            : CSUzick
**************************************/
#include <cstdio>
#include <iomanip>
#include <cstring>
#include <iostream>
#include <stack>
#include <vector>
#include <queue>
#include <cctype>
#include <cmath>
#include <algorithm>
#include <set>
#include <bitset>
#include <map>
#define LL long long
#define mk(a,b) make_pair(a,b)
#define ULL unsigned long long
#define mem(a,n) memset(a,n,sizeof(a))
#define fread freopen("in.txt","r",stdin)
#define fwrite freopen("out.txt","w",stdout)
#define N 1010
#define INF 0x3f3f3f3f
#define eps 1e-9
using namespace std;
LL num[100100],n,m;
bool check(int a){LL res=a;int cnt=1;for(int i=0;i<m;){if(res>=num[i]){res-=num[i];++i;}else{res=a;++cnt;}}return cnt<=n;
}
int main()
{int t;LL mid,high,low;scanf("%d",&t);while(t--){low=0,high=0;scanf("%lld%lld",&n,&m);for(int i=0;i<m;++i){scanf("%lld",num+i);high+=num[i];if(num[i]>low){low=num[i];}}if(n>=m){printf("%lld\n",low);continue;}else if(n==1){printf("%lld\n",high);continue;}while(high>=low){mid=(high+low)/2;if(check(mid)){high=mid-1;}else{low=mid+1;}}printf("%lld\n",low);}return 0;
}

CSU1976 -搬运工小明-二分相关推荐

  1. (CSU-1976)搬运工小明

    (CSU-1976)搬运工小明 Time Limit: 2 Sec Memory Limit: 128 Mb Submitted: 41 Solved: 20 Description 作为老人的小明非 ...

  2. csu 1976: 搬运工小明

    1976: 搬运工小明 Submit Page    Summary    Time Limit: 2 Sec     Memory Limit: 128 Mb     Submitted: 94   ...

  3. [2778]小明的花费预算 (二分查找)SDUT

     小明的花费预算 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 小明终于找到一份工作了,但是老板是个比较奇怪的人,他并不是按 ...

  4. 2022-6-4 小明爱上课,切木头,最多分成多少块,躲猫猫,争渡

    1. 小明爱上课 [动态规划] 小明非常喜欢上课,现在小明的课表有一些课,他可以通过课表选择上哪些课. 上课会有奖励,每门课上课时间长短不同奖励也会不一样,存在上课时间更长,奖励更少的情况.每一门课上 ...

  5. 小明系列故事——师兄帮帮忙

    Problem Description 小明自从告别了ACM/ICPC之后,就开始潜心研究数学问题了,一则可以为接下来的考研做准备,再者可以借此机会帮助一些同学,尤其是漂亮的师妹.这不,班里唯一的女生 ...

  6. 《21世纪机器人》——货物搬运工晨明号:重启前1小时

    货物搬运工晨明号:重启前1小时 "看那些小家伙跑起来了." 当晨明号从第5晶圆厂慢慢推出的时候兰德尔说.这是因为余甜给清洗系统下发了命令.小机器人们一拥而上,开始打扫庞大的码头,清 ...

  7. 《21世纪机器人》一一2.7 货物搬运工晨明号:重启前1小时

    本节书摘来自华章计算机<21世纪机器人>一书中的第2章,第2.7节,作者:[美]布莱恩·戴维·约翰逊(Brian David Johnson) 更多章节内容可以访问云栖社区"华章 ...

  8. NYOJ-49 开心的小明

    开心的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他 ...

  9. OSChina 周六乱弹 —— 小明和网关超经典的故事~

    2019独角兽企业重金招聘Python工程师标准>>> 周六,又到了瞎扯淡的时间了.周末,约会,男男女女,还有那啥那啥,你们懂得- 男人和女人明显不同,这样才导致了异性相吸吗? 1. ...

  10. CSP 201812-2 小明放学 Python实现+详解

    试题 代码 # 红灯 r 秒,黄灯 y 秒,绿灯 g 秒 r, y, g = [int(i) for i in input().split()]# n表示小明总共经过的道路段数和看到的红绿灯数目 n ...

最新文章

  1. 微信公众号数据2019_公众号年度数据报告怎么写?2019年公众号年报可一键生成啦!...
  2. 【转载】如何:为 Windows Phone 创建警报和提醒
  3. 如何为某些HTML标记存储任意数据
  4. CK11N对物料进行价格标记时,系统提示物料递归错误;物料的BOM里面勾选了“递归允许”。
  5. android 手动 打包,android 手动打包apk
  6. truecrypt加密分区的编译
  7. hashlib 模块 摘要算法
  8. 实现带下拉菜单的工具栏按钮
  9. python玩转android_如何用python玩跳一跳 ?(安卓版)
  10. 数据科学和人工智能技术笔记 十五、支持向量机
  11. 快速排序菜鸟python_python菜鸟教程学习13:文件操作
  12. java.util.ConcurrentModificationException错误解决方案
  13. visio双线方框怎么画_visio透明框怎么画? visio绘制方框透明的教程
  14. 计算机应用基础学生指导评语,计算机应用基础评课稿范本
  15. 浏览历史记录通用代码
  16. 沉没成本---欲罢不能的困局?
  17. 【Arduino实验16 步进电机的控制】
  18. excel透视表(pivot table)
  19. index()函数和match()函数联合使用案例
  20. 数据可视化软件finebi实现对濒危物种基础数据分析

热门文章

  1. 085、动手实验:JVM堆内存溢出的时候,应该如何解决?
  2. Java GC 日志详解(一图读懂)
  3. 唯众云课堂在数字技术专业混合式教学实践
  4. php+view绑定数据,.NET_asp.net实现Gradview绑定数据库数据并导出Excel的方法,本文实例讲述了asp.net实现Gradvi - phpStudy...
  5. 百度智能云 2核4g一年 286 团购链接
  6. mysql面试专题及答案
  7. Spring基于 XML 的IoC配置(实现账户的CURD)
  8. 【YoloV5】学习笔记 P1——CUDA安装
  9. L1-025 正整数A+B (15分) 题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。 输入格式: 输入在一行给出A和B
  10. 三、集成学习——偏差与方差理论