当前位置: 首页 > news >正文

上海外贸网站设计网上购物系统源码

上海外贸网站设计,网上购物系统源码,人物网页设计模板,免费开网站任务分配问题,有n个任务,每个任务有个达到时间。将这些任务分配给m个处理器,进行处理。每个处理器的处理时间不一样。处理器的任务列表有最大任务数限制。 分配任务的策略是:当前待分配的任务的处理时刻最小。如果处理时刻相同&am…

任务分配问题,有n个任务,每个任务有个达到时间。将这些任务分配给m个处理器,进行处理。每个处理器的处理时间不一样。处理器的任务列表有最大任务数限制。
分配任务的策略是:当前待分配的任务的处理时刻最小。如果处理时刻相同,处理器id小的优先。
假设从时刻0开始分配任务和处理任务。在某一时刻,要求处理器先标记任务的完成状态,再接受新的任务。
问所有问题处理完毕后的时刻是多少?

#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <functional>
#include <string>
#include <queue>
using namespace std;class Solution
{
public:int Dispatch(vector<int> timeUnit, vector<int> arriveTimeList, int queueLen){int n = timeUnit.size();this->timeUnit = timeUnit;this->queueLen = queueLen;taskTime.resize(n, 0);taskCount.resize(n, 0);auto cmp = [&] (int x, int y) -> bool {if (taskCount[x] == queueLen && taskCount[y] == queueLen) {return x > y;}if (taskCount[x] == queueLen) {return true;}if (taskCount[y] == queueLen) {return false;}int time1 = taskTime[x] + timeUnit[x] * taskCount[x];int time2 = taskTime[y] + timeUnit[y] * taskCount[y];if (time1 == time2) {return x > y;}return time1 > time2;};int j = 0;int curTime = 0;for (; ; curTime++) {priority_queue<int, vector<int>, function<bool(int,int)>> q(cmp);// 出队for (int i = 0; i < n; i++) {if (taskCount[i] == 0) {q.push(i);continue;}int cnt = (curTime - taskTime[i]) / timeUnit[i];taskCount[i] -= cnt;if (taskCount[i] < 0) {taskCount[i] = 0;taskTime[i] = 0;} else {taskTime[i] += cnt * timeUnit[i];}q.push(i);}int task = q.top();// 入队,直到不能再加了while (j < arriveTimeList.size() && arriveTimeList[j] <= curTime && taskCount[task] < queueLen) {q.pop();taskCount[task]++;if (taskCount[task] == 1) {taskTime[task] = curTime;}j++;q.push(task);task = q.top();}if (j == arriveTimeList.size()) {break;}}int ans = 0;for (int i = 0; i < n; i++) {ans = max(ans, taskTime[i] + taskCount[i] * timeUnit[i]);}return ans;}
private:vector<int> taskTime;vector<int> taskCount;vector<int> timeUnit;int queueLen;
};int main(int argc, char *argv[])
{vector<int> timeUnit = {1, 2, 3, 4, 5};vector<int> arriveTimeList = {0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7};int rightAns = 5;Solution s;int ans = s.Dispatch(timeUnit, arriveTimeList, 3);cout << "ans: " << ans << endl;return 0;
}
http://www.yayakq.cn/news/206035/

相关文章:

  • 专业的盐城网站开发大连网站制作网页
  • phpcms网站模版下载WordPress出现508
  • 泉州市建设系统培训中心网站聊城wap网站建设
  • 网站首页布局设计代码西安小程序开发的公司
  • 百度推广是必须先做网站吗设计工作室图片 实拍
  • 广州智迅网络做网站网站开发公司的义务
  • 网站一定要服务器吗东阳建设公司网站
  • 网站内容注意事项有电脑网站怎样建手机号码
  • 湖南门户网站建设wordpress 首页 文章图片不显示
  • 沈阳市三好街网站建设公司邵阳经开区网站
  • 烟台网站制作公司app小程序制作平台
  • 可做网站的免费空间东莞建设网公租房信息
  • 网站开发环境与工具北京网站建设公司 网络服务
  • 网站建设开源模板一级做网站视频教学
  • 现在网站用什么软件做seo专员是干嘛的
  • 屏蔽蜘蛛抓取 对网站有什么影响wordpress 春菜
  • 做网站广告中敏感词会涉及到工商江门国际网
  • 公司的网站怎么做推广打好代码怎么做网站
  • 买做指甲的材料在哪个网站wordpress实现论坛功能
  • 平台网站建设电子商务网站开发基础
  • 网站友情链接美化代码企业网站建设哪家
  • 建立网站外链常用的渠道有哪些北京优化seo
  • 聊城菜鸟网站建设公司四川seo优化
  • 医药加盟网站模板网站源码下载炫酷
  • 宝安网站建设(深圳信科)python 网站开发 pdf
  • 郑州h5网站建设企业起名网站怎么做
  • 福州网站建设资讯企业营销型网站建设优惠
  • 公司网站建设手续织梦如何建设网站首页
  • 网站开发人员职责许昌城乡建设局网站
  • 网站内容批量替换菏泽网站建设公司