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;
}
相关推荐
生态学者7 小时前
Global Change Biology | 森林越“步调一致”,反而越怕干旱?树木生长与叶片活动的同步之谜
大数据·人工智能·算法·r语言·微信公众平台
lsswear7 小时前
Agent 框架新手入门与实战部署指南
大数据·人工智能·算法
学逆向的7 小时前
C 循环结构的执行效率分析
c语言·开发语言·数据结构·网络安全
Data analyse4569 小时前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
Navigator_Z10 小时前
LeetCode //C - 1293. Shortest Path in a Grid with Obstacles Elimination
c语言·算法·leetcode
Nil20811 小时前
leetcode 64最小路径和
算法·leetcode·职场和发展
光影少年11 小时前
AI Agent、自动化与未来工作
人工智能·算法·架构
牧羊人.33311 小时前
计算机视觉基础 第16章|EigenFace,FisherFace,LBPH传统人脸识别算法
人工智能·算法·计算机视觉
jeo陽11 小时前
04-循环实战:素数、最大公约数、级数求和与枚举法
c语言·开发语言·数据结构
Nil20811 小时前
leetcode 72编辑距离
算法·leetcode·职场和发展