切绳子题解(博客搬家)

本文介绍了一道使用二分法求解的切绳子问题,题目要求在给定N条长度不一的绳子中切割出K条相同长度的绳子,并求出最大可能的长度。通过将浮点数转换为整数进行处理,然后使用二分法搜索解决方案,最终得出每条绳子的最大长度。代码实现中特别处理了输出为0.00的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

题目描述

有N条绳子,它们的长度分别为Li。如果从它们中切割出K条长度相同的绳子,这K条绳子每条最长能有多长?
答案保留到小数点后2位(直接舍掉2为后的小数)。

输入

第一行两个整数N和K,接下来N行,描述了每条绳子的长度Li。

输出

切割后每条绳子的最大长度。

样例输入
4 11
8.02
7.43
4.57
5.39
样例输出
2.00
提示

对于100%的数据 0<Li<=100000.00 0<n<=10000 0<k<=10000

分析题目

最近在做二分题解,作为一道经典的二分题,切绳子是一定要会的。
这道题与木材加工有些相似,但这里出现了浮点数,又要比木材加工复杂一些。
又因为它最多只有两个小数点,所以,我们可以直接把输入的数乘100,把浮点数变为整数就行了。
当然,输出时又要除100,再变为浮点数。

double ans=0;
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)
    {
   
        scanf("%lf",&a[i]);
        a[i]*=100;
        ans+=a[i];
    }

这里我用了一个特判

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值