PTA:切割绳子

题干

有N条绳子,它们的长度分别为L

i

,i=1,⋯,N。如果从它们中切割出K条长度相同的绳子,这K条绳子每条最长能有多长?

输入格式:

第一行两个整数n和k(1<n<10000;1<k<10000)。

接下来n行,描述了每条绳子的长度L

i

,L

i

也是整数。

输出格式:

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

输入样例:

4 11

802

743

457

539

输出样例:

200

解答过程

c 复制代码
#include <stdio.h>
int canCut(int ropes[], int n, int k, int length) {
    int count = 0;
    for (int i = 0; i < n; ++i) {
        count += ropes[i] / length;
    }
    return count >= k;
}
int maxCutLength(int ropes[], int n, int k) {
    int left = 1, right = 0;
    for (int i = 0; i < n; ++i) {
        if (ropes[i] > right) {
            right = ropes[i];
        }
    }
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (canCut(ropes, n, k, mid)) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return right;
}
int main() {
    int n, k;
    scanf("%d %d", &n, &k);
    int ropes[n];
    for (int i = 0; i < n; ++i) {
        scanf("%d", &ropes[i]);
    }
    int maxLength = maxCutLength(ropes, n, k);
    printf("%d\n", maxLength);
    return 0;
}
相关推荐
IT古董8 分钟前
【第五章:计算机视觉-项目实战之生成式算法实战:扩散模型】3.生成式算法实战:扩散模型-(3)DDPM模型训练与推理
人工智能·算法·计算机视觉
独自破碎E24 分钟前
Leetcode2166-设计位集
java·数据结构·算法
Swift社区33 分钟前
LeetCode 396 - 旋转函数 (Rotate Function)
算法·leetcode·职场和发展
海琴烟Sunshine35 分钟前
leetcode 88.合并两个有序数组
python·算法·leetcode
Cikiss36 分钟前
LeetCode160.相交链表【最通俗易懂版双指针】
java·数据结构·算法·链表
很㗊1 小时前
C与C++---指针、引用、结构体及内存管理
c语言·开发语言
一条星星鱼1 小时前
深度学习中的归一化:从BN到LN到底是怎么工作的?
人工智能·深度学习·算法·归一化
zsc_1181 小时前
基于贪心最小化包围盒策略的布阵算法
算法
哈泽尔都1 小时前
运动控制教学——5分钟学会PRM算法!
人工智能·单片机·算法·数学建模·贪心算法·机器人·无人机
2301_789015622 小时前
算法与数据结构——排序算法大全
c语言·开发语言·数据结构·c++·算法·排序算法·visual studio