百练 2774 木材加工 二分
来源:互联网 发布:淘宝网屏风富贵牡丹 编辑:程序博客网 时间:2024/05/17 07:27
做动态规划的时候扒出来的题目,因为看着能用二分做就顺手写一写试试看看
先给出题目链接好了https://vjudge.net/contest/143215#problem/I
为了避免搜索不到,这一次特意的把题目贴出来。
因为比赛没有结束,所以看不到出处,只好在网上查了一下来源
这题看起来就能用二分做呀!不过好久没有写二分,手还是生了。
既然把这个题目放在动态规划的栏目里面,还是用动态规划的思想想想好了,晚上想一想。。。
先把二分的代码贴出来吧!
题目大意:
木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目是给定了。
当然,我们希望得到的小段越长越好,你的任务是计算能够得到的小段木头的最大长度。 木头长度的单位是厘米。
原木的长度都是正整数,我们要求切割得到的小段木头的长度也要求是正整数。
输入:
第一行是两个正整数N和K(1 ≤ N ≤ 10000, 1 ≤ K ≤ 10000),N是原木的数目,K是需要得到的小段的数目。
接下来的N行,每行有一个1到10000之间的正整数,表示一根原木的长度。
输出:
输出能够切割得到的小段的最大长度。如果连1厘米长的小段都切不出来,输出"0"。
Sample In:
3 7
232
124
456
Sample Out:
114
#include <iostream>#include <algorithm>using namespace std;int n,k,arr[10010],le=1,ri;bool calc(int length);int main(){ ios_base::sync_with_stdio(false); cin>>n>>k; for(int i=0;i<n;++i) cin>>arr[i],ri=max(ri,arr[i]); if(!calc(1)) cout<<'0'<<endl; else{ while(ri>le+1)(calc((ri+le)>>1)?le:ri)=(ri+le)>>1; cout<<((le==ri||calc(ri))?ri:le)<<endl; } return 0;}bool calc(int length){ int ans=0; for(int i=0;i<n;++i) ans+=arr[i]/length; return ans>=k;}
0 0
- 百练 2774 木材加工 二分
- 百练 2774:木材加工
- 百练2774:木材加工题解
- 百炼2774-木材加工-C语言-二分查找
- OpenJugde - 2774:木材加工
- OpenJudge 2774 木材加工
- poj 2774 木材加工(dp/二分答案+贪心)
- COJ 1031木材加工(二分)
- codevs 3297 木材加工(裸二分)
- 【二分】hdu 1969 Pie(同木材加工)
- 木材加工
- 木材加工
- 木材加工
- 木材加工
- 【日常学习】【二分查找】cidevs3297 木材加工题解
- 【二分】coj 1048 木材加工(加强版)
- wikioi 3297 木材加工
- [POJ2774]木材加工
- 【LeetCode】Minimum Moves to Equal Array Elements 解题报告
- Android抬手亮屏
- 快速傅里叶变换 FFT 模板【bzoj2179】 FFT快速傅立叶
- 汇编初探
- Android进阶之路 - Fragment(碎片化)、进栈、不进栈的简单使用(一)
- 百练 2774 木材加工 二分
- Linux命令(2)——od命令
- LibreOffice的卸载与WPS的安装
- 对于一个有正有负的整数数组,请找出总和最大的连续数列
- Integer中一些知识点
- QML 锚布局 和 DPI 在Android上的使用例子
- 树梅派应用40:树莓派 Windows10 IoT Core 开发教程
- U3D的OnMouseEnter()方法与OnMouseExit()方法
- 查找问题方式总结