作业介绍
割绳子
#include<bits/stdc++.h>
using namespace std;
int arr[40000];
int main()
{
int n,m,sum=0;//sum求总和
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>arr[i];
sum+=arr[i];
}
//求出假设可以绳子拼接,每个孩子最大可以分到绳子长度为平均值
int arv = sum/m;//不考虑小数部分
/*从最大可分到的长度开始不断枚举递减,
比如我们先假设每个同学能分到arv长的绳子,
然后看看每根绳子能剪出几个 arv的长度,把能剪出的段数都加起来。
看看加起来的段数够不够分给所有同学。如果够分,那此时arv的值就是每个同学能分到的最长长度啦。
如果不够分,我们就把长度变短一点,比如变成arv-1米,再重新算一遍。
*/
int sum2;//代表总段数
for(int i=arv;i>=1;i--)
{
sum2=0;
for(int j=1;j<=n;j++)
{
sum2+=arr[j]/i;
}
if(sum2>=m)
{
cout<<i;
return 0;
}
}
return 0;
}
24 1896
900 43 218 489 853 751 987 947 545 66 736 577 839 343 229 867 475 236 141 330 436 124 1000 880
题目
认领作业后才可以查看作业内容。
- 状态
- 正在进行…
- 题目
- 10
- 开始时间
- 2025-1-15 0:00
- 截止时间
- 2222-1-26 23:59
- 可延期
- 24 小时