PTA:切割绳子
2023-12-14 20:53:03
题干
有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
解答过程
#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;
}
文章来源:https://blog.csdn.net/WeiYan_2022/article/details/134915841
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!