Advertisement

POJ-1064 网线主管采用二分搜索技术

阅读量:

原题传送门

题目大意解析

假设有 N 根绳子,其各自的长度为 l_i,若需要从中截取 K 根等长的绳子,那么每根绳子的最大可能长度是多少?结果需保留两位小数。

解题思路分析

白书中所提及的典型二分查找问题中,左边界设定为0,右边界则取所有绳子中最长的那一根的长度。在每次迭代过程中,计算(l+r)/2这一中间值,并统计该长度下能够切割出的绳子数量,同时需注意以下几个关键点:
(1)为了保留符合要求的最大长度,在mid位置满足条件时,应将l更新为mid,从而维持r这一较大值不变。
(2)在输出结果时需特别注意格式要求,当r小于0.1时,应强制对尾数进行舍弃处理,具体方式为执行int(r * 100) / 100.0的操作。
(3)关于循环终止条件的设计,由于涉及小数运算,因此应采用l-r的形式作为判断依据,以避免因精度问题导致程序陷入无限循环的状态。

完整代码

复制代码
    #include<iostream>
    #include<iomanip>
    #include<cmath>
    #include<string.h>
    #include<queue>
    #inc

全部评论 (0)

还没有任何评论哟~