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;
}
相关推荐
晓蛋5 天前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
倒头就睡的小比特5 天前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
傲世仙尊5 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
牵猫散步的鱼儿5 天前
重载、重写(覆盖)、重定义区别
c语言
猎头南楼5 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
phltxy5 天前
C 语言指针:从内存地址到灵活的数据访问
c语言
m0_547486665 天前
《数据结构教程》全套 PPT课件2026
数据结构
phltxy5 天前
C 语言中的数据存储:从类型到二进制位
c语言
旖旎夜光5 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控