传送门:牛客

题目描述:

二月中旬虐狗节前夕,华华决定给月月准备一份礼物。为了搭建礼物的底座,华华需要若干根同样长的木棍。华华手头上有一些长度参差不齐的木棍,他想将每根都裁剪成若干段自己想要的长度,并丢掉多余的部分。因为华华的手很巧,所以他的裁剪过程不会有任何的失误。也就是说,对于一根长度为N的木棍,华华可以精准的将它们裁剪为若干段木棍,使它们的长度之和为N。
华华不知道裁剪成多长比较好,所以干脆越长越好。不过由于华华有点强迫症,所以他希望长度为非负整数。保证所有木棍的原长也是非负整数。那么请问华华最终得到的每根木棍多长呢?
输入:
5 5
10
40
13
22
7
输出:
1

一道简单的二分答案题,脱离复杂的题面来说是一道经典的切木棍的题目,曾经以各种面纱在各大OJ上出现过,下面讲述一下这种题目的具体思路

具体思路:

  1. 首先我们可以二分我们的每根木棍的长度(当然此时我们二分出来的木棍长度并不一定满足我们的条件,只是用来二分而已)
  2. 然后我们根据我们二分出来的木棍来判断是不是符合条件,此时我们就计算每一根原来的木棍能分成几根我们二分出来的木棍即可,如果数量总和满足我们的需求,就说明我们或许可以取更长的,反之则不可

注意点:此题需要开long long且如果你用的二分习惯和我一样的话注意ans的初始值一定要赋值为0,因为答案可能为0(不然第一个点过不去),但是注意此时我们的l是不能刚开始就赋值为0的,因为这会导致我们的mid在跑二分的时候成为0导致除0错误

具体的代码:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <string.h>
#include <stack>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define root 1,n,1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
#define maxn 1000000
ll N,K;
ll a[maxn];
ll check(ll mid) {ll sum=0;for(int i=1;i<=N;i++) {sum+=(a[i]/mid);}if(sum>=K) return true;else return false;
}
int main() {N=read();K=read();ll l=1,r=-1;for(int i=1;i<=N;i++) {a[i]=read();r=max(r,a[i]);}ll ans=0;while(l<=r) {int mid=(l+r)>>1;if(check(mid)) {ans=mid;l=mid+1;}else {r=mid-1;}}cout<<ans<<endl;return 0;
}

刷题记录:牛客NC23049华华给月月准备礼物相关推荐

  1. 刷题记录:牛客NC24608[USACO 2011 Ope S]Learning Languages

    传送门:牛客 题目描述: [USACO11OPEN]Learning Languages S 农夫约翰的 N ( 2 < = N < = 10 , 000 ) N(2<=N<= ...

  2. 刷题记录:牛客NC16129小小粉刷匠

    传送门:牛客 题目描述: "lalala,我是一个快乐的粉刷匠",小名一边快活地唱着歌,一边开心地刷着墙",兴致突然被打断,"小名,你今天如果刷不 完这一栋楼的 ...

  3. 刷题记录:牛客NC17889新建 Microsoft Office Word 文档

    传送门:牛客 题目描述: CSL正在学习<计算机办公自动化>文件的建立与删除. CSL发现,当他新建一个word文档时,会得到一个名为"新建 Microsoft Office W ...

  4. 刷题记录:牛客NC17193简单瞎搞题

    传送门;牛客 题目描述: 一共有 n个数,第 i 个数是 xi xi 可以取 [ l i , r i ] [li , ri] [li,ri] 中任意的一个值. 设 S = ∑ x i 2 S = \s ...

  5. 刷题记录:牛客NC16122郊区春游

    传送门:牛客 题目描述: 今天春天铁子的班上组织了一场春游,在铁子的城市里有n个郊区和m条无向道路,第i条道路连接郊区Ai和Bi, 路费是Ci.经过铁子和顺溜的提议,他们决定去其中的R个郊区玩耍(不考 ...

  6. 刷题记录:牛客NC24083Greedy Gift Takers

    传送门:牛客 题目描述 Farmer John's nemesis, Farmer Nhoj, has NNN cows (1≤N≤1051 \leq N \leq 10^51≤N≤105), con ...

  7. 刷题记录:牛客NC20811蓝魔法师

    传送门:牛客 题目描述: "你,你认错人了.我真的,真的不是食人魔."--蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于k,两种方案不 同当且仅当存在 ...

  8. 刷题记录:牛客NC20875舔狗舔到最后一无所有

    传送门:牛客 题目描述: 作为队伍的核心,forever97很受另外两个队友的尊敬. Trote_w每天都要请forever97吃外卖,但很不幸的是宇宙中心forever97所在的学校周围只有3家fo ...

  9. 刷题记录:牛客NC15162小H的询问

    传送门:牛客 题目描述: 小H给你一个数组{a},要求支持以下两种操作: 1. 0 l r(1<=l<=r<=n),询问区间[l,r]中权值和最大的有效子区间的权值和,一个子区间被认 ...

最新文章

  1. pythonbool运算教学_python,_pandas Series bool与运算,python - phpStudy
  2. R语言ggplot2可视化将图像标题(title)居中显示实战
  3. 秒杀多线程第十篇 生产者消费者问题 (续)
  4. Class 类文件结构
  5. docker镜像打包save,载入load,启动run
  6. 【springBoot】注解的详解
  7. ORACLE 索引的三种状态: VALID、 N/A 、UNUSABLE
  8. Eucalyptus-NC管理
  9. 利用before伪元素创建图标
  10. 与关系型数据库相比,MongoDB的优缺点
  11. 新媒体文章标题怎么写?
  12. mac终端查看IP信息
  13. linux limits.conf 生效,limits.conf生效问题
  14. 2017《Java技术预备作业1》计科1502杨雪莹
  15. 两周自制编程语言读书总结
  16. Hexo+GithubPage搭建Fan主题的博客(2)本地初始化Hexo博客项目
  17. 提交到GitHub错误:src refspec 分支名 does not match any
  18. anti-debug你必须知道的基础篇 All in one
  19. Word插入希腊字母及特殊符号 分类整
  20. gamepad android手柄,CF手游手柄怎么玩 CF手游怎么设置安卓手柄

热门文章

  1. js放大镜(图片放大)
  2. 既可以输入新的信息,又可以从下拉框中选择的代码
  3. 游戏企业如何高质量出海?如何保证出海内容合规
  4. 立创EDA画图过程,实际布线考虑,自动布线的多板框问题,自动布线
  5. Javascript数据类型?(基本数据类型和引用数据类型)
  6. 全网最完美地解决使用spring boot的@Value(“${xxx}“)注解时报出的错误:Could not resolve placeholder ‘xxx‘ in value “${xxx}“
  7. 香港理工大学酒店管理html,中国香港理工大学酒店管理专业分析
  8. 金立的Gpad G2
  9. 基于Canvas的N宫格拼图
  10. 基于VUE + Echarts 实现可视化数据大屏景区管理平台