0
已解决
张睿杰
初级天翼
初级天翼
#include <iostream>
#include <algorithm>
using namespace std;
int a[100010],b[100010];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+1+n);
if(n<=m)
{
cout<<a[n];
return 0;
}
for(int i=1;i<=m;i++) b[i]=a[n-i+1];
for(int i=n-m;i>=1;i--)
{
int max1=10000000,wz=0;
for(int j=1;j<=m;j++)
{
if(max1>b[j])
{
max1=b[j];
wz=j;
}
}
b[wz]+=a[i];
}
int max2=0;
for(int i=1;i<=m;i++) max2=max(max2,b[i]);
cout<<max2<<endl;
return 0;
}
10分代码
1053 最佳调度问题
题目描述 Description
假设有n个任务由k个可并行工作的机器完成。完成任务i需要的时间为ti。试设计一个算法找出完成这n个任务的最佳调度,使得完成全部任务的时间最早。 对任意给定的整数n和k,以及完成任务i需要的时间为ti,i=1~n。编程计算完成这n个任务的最佳调度。
输入描述 Input Description
第一行有2 个正整数n和k。第2 行的n个正整数是完成n个任务需要的时间。
输出描述 Output Description
计算出的完成全部任务的最早时间
样例输入 Sample Input
7 3 2 14 4 16 6 5 3
样例输出 Sample Output
17
贪心思路