题目描述:
木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小
段的数目是给定的。当然,我们希望得到的小段越长越好,你的任务是计算能够得到的小段
木头的最大长度。
木头长度的单位是cm。原木的长度都是正整数,我们要求切割得到的小段木头的长度
也是正整数。
输入:
第一行是两个正整数N和K(1 ≤ N ≤ 10000,1 ≤ K ≤ 10000),N是原木的数目,
K是需要得到的小段的数目。
接下来的N行,每行有一个1到10000之间的正整数,表示一根原木的长度。
输出:
输出能够切割得到的小段的最大长度。如果连1cm长的小段都切不出来,输出”0”。
输入样例:
3 7
232
124
456
输出样例:
114
程序:
#include <stdio.h>
int n, k, len[10000]
int isok(int t) {
int num = 0, i
for (i = 0i <ni++) {
if (num >= k) break
num = ①
}
if ( ② ) return 1
else return 0
}
int main() {
int i, left, right, mid
scanf("%d%d", &n, &k)
right = 0
for (i = 0i <ni++) {
scanf("%d", &(len))
if (right <len) right = len
}
right++
③
while ( ④ <right) {
mid = (left + right) / 2
if ( ⑤ ) right = mid
else left = mid
}
printf ("%d\n", left)
return 0
}
木材经过以下程序才可以变成舞台:1. 选材:首先需要选择适合制作舞台的木材,一般使用优质的硬木如橡木、枫木等。
2. 切割:将选好的原木进行切割和加工,使其符合所需尺寸和形状。这个过程通常由机器完成。
3. 砂光处理:对于裸露表面的部分,需要进行砂光处理以去除毛刺、凹凸不平等缺陷,并让表面更加平滑。
4. 拼接组装:将已经切割好并做好了砂光处理的各个部件拼接起来组装成一个完整的舞台结构。
5. 上漆或喷涂防火涂料:为了保护木材不受损坏和延长使用寿命,在组装完成后需要上漆或者喷涂防火涂料。同时也可以根据实际情况选择颜色和纹理来美化外观。
6. 完成安装调试: 最后是在现场进行安装调试,确保所有零件都牢固可靠,并且能够满足相应要求。
首先,你知道这一题可以使用二分法去优化而不是穷举,已经很好了。但是,你没有把二分法写正确。出现了Runtime Error是因为你的程序出现了除0的错误,比方说测试数据为3 3
1 1 1
你的程序就会除0,错误,正确答案应该是1。
如果不理解程序为什么是错的,可以把测试数据
3 3
100 100 100
模拟运行以下,看看出现了什么问题。正确答案应该是100,而你的程序输出的是75.
最后,下面是我写的程序:
#include <stdio.h>
int
main( void )
{
int i, left, right, mid
int num
int n, k
int len[10000]
scanf( "%d%d", &n, &k )
right = 0
for( i = 0i <n++i ){
scanf( "%d", &len[i] )
if( right <len[i] )
right = len[i]
}
++right
left = 0
while( left + 1 <right ){
mid = (left + right ) / 2
num = 0
for( i = 0i <n++i ){
if( num >= k )
break
num += len[i] / mid
}
if( num >= k )
left = mid
else
right = mid
}
printf( "%d\n", left )
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)