noip2005初赛-木材加工
2015-08-23 16:56
295 查看
noip2005C_4_2木材加工
题目描述:
木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有
剩余),需要得到的小段的数目是给定的。当然,我们希望得到的小段越长越好,你的任务
是计算能够得到的小段木头的最大长度。木头长度的单位是cm。原木的长度都是正整数,
我们要求切割得到的小段木头的长度也是正整数。
输入:
第一行是两个正整数N和K(1≤N≤10000,1≤K≤10000),N是原木的数目,
K是需要得到的小段的数目。接下来的N行,每行有一个1到10000之间的正整数,表示一根原木的长度。
输出:
输出能够切割得到的小段的最大长度。如果连1cm长的小段都切不出来,输出“0”。
输入样例:
3 7
232
124
456
输出样例:
114
题目描述:
木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有
剩余),需要得到的小段的数目是给定的。当然,我们希望得到的小段越长越好,你的任务
是计算能够得到的小段木头的最大长度。木头长度的单位是cm。原木的长度都是正整数,
我们要求切割得到的小段木头的长度也是正整数。
输入:
第一行是两个正整数N和K(1≤N≤10000,1≤K≤10000),N是原木的数目,
K是需要得到的小段的数目。接下来的N行,每行有一个1到10000之间的正整数,表示一根原木的长度。
输出:
输出能够切割得到的小段的最大长度。如果连1cm长的小段都切不出来,输出“0”。
输入样例:
3 7
232
124
456
输出样例:
114
var n,k:integer; len:array[1..10000] of integer; i,left,right,mid:integer; function isok(t:integer):boolean; //判断每根木头切成长度为t的小段可不可行,可行返回true var num,i:integer; begin num:=0; for i:=1 to n do begin if num>=k then break; num:=num+len[i] div t; end; if num>=k then isok:=true else isok:=false; end; begin assign(input,'noip2005C_4_2.txt'); reset(input); readln(n,k); right:=0; for i:=1 to n do begin readln(len[i]); if right<len[i] then right:=len[i]; //right保存所有木头中最长的长度 end; inc(right); left:=0; while left+1<right do begin mid:=(left+right)div 2; if not isok(mid) then right:=mid else left:=mid; end; writeln(left); end.
相关文章推荐
- PyInstaller编译python3时使用的详细参数介绍
- shell 的几个数据处理命令 管道命令
- 操作系统 - 死锁(Deadlock)的概述、条件、对策
- 操作系统 - 死锁(Deadlock)的概述、条件、对策
- 关于指针类型转换的一个有趣实验
- 阿里2016笔试题-棋盘问题 求路径的种数
- 很好的正则表达式教程
- InputStream与OutputStream的比较
- 算法学习日记 火车站出站问题序排列算法。
- [笔记][Java7并发编程实战手册]3.6 并发阶段任务的运行phaser
- Mathematica数字图像处理功能颇强(1)
- 黑马程序员_反射中常用的方法笔记小结
- samba 实现不同操作系统之间的文件共享
- oracle 视图的概述
- 环状序列
- 【C++数据结构】顺序表的模版类实现
- [转]SQL的四种连接-左外连接、右外连接、内连接、全连接
- OC: Block回调的使用demo
- Linux中点命令
- 瑟夫环问题