
P2440 木材加工 二分答案入门
PS:可以使用暴力,但会超时,亲测。 代码如下:
发布日期:2021-05-07 08:56:55
浏览次数:23
分类:技术文章
本文共 982 字,大约阅读时间需要 3 分钟。
原题:P2440 木材加工
题目描述
木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有剩余),需要得到的小段的数目是给定的。当然,我们希望得到的小段木头越长越好,你的任务是计算能够得到的小段木头的最大长度。木头长度的单位是cm。原木的长度都是正整数,我们要求切割得到的小段木头的长度也是正整数。 例如有两根原木长度分别为11和21,要求切割成到等长的6段,很明显能切割出来的小段木头长度最长为5. 输入格式 第一行是两个正整数N和K(1 ≤ N ≤ 100000,1 ≤ K ≤ 100000000),N是原木的数目,K是需要得到的小段的数目。 接下来的N行,每行有一个1到100000000之间的正整数,表示一根原木的长度。 输出格式 能够切割得到的小段的最大长度。如果连1cm长的小段都切不出来,输出”0”。 输入输出样例 输入 #1 3 7 232 124 456 输出 #1 114思路:找到最大的一根木头,利用二分查找的思想,找到最大切割值。
#includeusing namespace std;int n,k,tsum;int a[100005];bool cut(int m) //判断该切割值是否可行{ tsum=0; for(int i=0; i =k) return 1; return 0;}int main(){ int maxx=0,mann=0; cin>>n>>k; for(int i=0; i >a[i],maxx=max(a[i],maxx); int l=1,r=maxx; while(l<=r) { int mid=l+r>>1; if(cut(mid)) { mann=max(mann,mid); l=mid+1; //这里要往后查找,否则只能找到更小的切割值 } else r=mid-1; } cout< <
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月10日 09时02分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
IDEA 热部署太热情不好(失去焦点就热部署)
2019-03-04
IDEA2020-2配置git,并从远程仓库获取代码分支
2019-03-04
IDEA快速恢复开发:导出配置和导入配置操作
2019-03-04
Java Socket网络编程-总结
2019-03-04
Linux通过yum仓库安装gcc详细教程
2019-03-04
加油站(贪心)
2019-03-04
最长的连续元素序列长度(哈希表)
2019-03-04
访问docker中的nginx容器部署
2019-03-04
LNMP环境搭建
2019-03-04
PostgreSQL 分区表探索(pg_pathman)数据库优化
2019-03-04
设计一个验证系统
2019-03-05
HBase1.2.6环境搭建
2019-03-05
ubuntu 安装 vncserver
2019-03-05
centos7防火墙导致nginx无法访问
2019-03-05
python绘制一份完美的中国地图
2019-03-05
Python 超级简单精准计算地点日出日落时间
2019-03-05
你不得不知道的python超级文献搜索工具
2019-03-05