lintcode-木材加工-183
2015-10-14 22:17
260 查看
有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为
样例
有3根木头
注意
木头长度的单位是厘米。原木的长度都是正整数,我们要求切割得到的小段木头的长度也要求是整数。无法切出要求至少 k 段的,则返回
挑战
O(n log Len), Len为 n 段原木中最大的长度
k。当然,我们希望得到的小段越长越好,你需要计算能够得到的小段木头的最大长度。
样例
有3根木头
[232, 124, 456],
k=7, 最大长度为
114.
注意
木头长度的单位是厘米。原木的长度都是正整数,我们要求切割得到的小段木头的长度也要求是整数。无法切出要求至少 k 段的,则返回
0即可。
挑战
O(n log Len), Len为 n 段原木中最大的长度
class Solution { public: int woodCut(vector<int> L, int k) { if(L.empty()) return 0; int Max=L[0]; for(auto &e:L) Max=max(Max,e); int end=Max,begin=1; while(begin+1<end){ int mid=begin+(end-begin)/2; if(count(L,L.size(),mid)>=k) begin=mid; else end=mid; } if(count(L,L.size(),end)>=k) return end; if(count(L,L.size(),begin)>=k) return begin; return 0; } private: int count(vector<int> &L,int size,int length){ int sum=0; for(int i=0;i<size;++i) sum+=L[i]/length; return sum; } };
相关文章推荐
- 再读大道之简第三章
- 高级软件工程的第一次作业:回顾自己本科设计
- 关于github在mac 10.10上无法提交代码的解决办法---备用
- oracle10g 安装笔记
- 关于java中有符号数转换成无符号数的相关问题
- 大道至简第三章读后感
- ISO/IEC 9899:2011 条款6.7.1——存储类说明符
- 黑马程序员_JAVA笔记之(File类,过滤器,递归练习)
- PL/SQL Developer 连接Oracle数据库详细配置方法
- C# Datetime.Ticks将时间转换成以秒为单位与格林尼治时间
- 更踪设备的地理位置(LocationManager)
- 九度OJ 1004:Median
- oracle 命令1
- duilib库分析: 消息流程分析
- linux 使用proxychains连接代理服务器
- 高性能javascript 笔记 第一章 loading and executing (一)
- 九度OJ 1004:Median
- PostgreSQL general public partition table trigger
- 华三S3100V2 、华为5700 交换机 (低端二层)配置
- 黑马程序员——Java基础语法(一)