前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多机调度问题(贪心)

多机调度问题(贪心)

作者头像
lexingsen
发布2022-02-25 08:41:18
4340
发布2022-02-25 08:41:18
举报
文章被收录于专栏:乐行僧的博客

有n个任务,m台机器,n>m,每个作业i可以选择一台设备进行加工,加工时间为ti,每台机器同时只能加工一个作业,且不可中断。实现作业调度,使得n个作业的等待时间最短。 样例输入:

代码语言:javascript
复制
6 3
2 5 13 15 16 20

样例输出:

代码语言:javascript
复制
28

贪心策略:优先处理花费时间长的任务,这样可以减少短任务的等待时间 实现:

代码语言:javascript
复制
#include <bits/stdc++.h>
using namespace std;

const int N=10010;
int t[N]; // 存储任务所需要时间
int time[N]; // 存储完成任务后的时间

int main() {
	int n,m;
	cin >> n >> m;
	for (int i=0; i<n; ++i) cin >> t[i];
	sort(t, t+n, [](const int& x, const int& y) {return x > y;});
	int res = 0;//统计等待时间
	for (int i=0; i<n; ++i) {
	// 将最长处理时间的任务分配给最先空闲的机器
	// 这里不需要关注那一台机器首先空闲
		res += (res + *min_element(time, time+n));
		*min_element(time,time+n) += t[i];
	}
	// 输出最早完成时间
	cout << *max_element(time, time+n) << endl;
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档