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

网站建设辶金手指排名十二刷网站seo排名软件

网站建设辶金手指排名十二,刷网站seo排名软件,湘潭网站建设 r磐石网络,企业手机端网站源码题目链接:Pipeline Scheduling 题目描述: 给定一张5n(1≤n≤20)5\times n(1\le n\le20)5n(1≤n≤20)的资源需求表,第iii行第jjj列的值为’X’表示进程在jjj时刻需要使用使用资源iii,如果为’.则表示不需要使用。你的任务是安排十个…

题目链接:Pipeline Scheduling
题目描述:

给定一张5×n(1≤n≤20)5\times n(1\le n\le20)5×n(1n20)的资源需求表,第iii行第jjj列的值为’X’表示进程在jjj时刻需要使用使用资源iii,如果为’.'则表示不需要使用。你的任务是安排十个相同进程的启动时间,使得所有进程完成的时间尽可能的早。在安排每个进程的开始时间你需要注意:

  • 一个进程一旦开始就必须要一直执行,而不能停止;
  • 任意一个资源必须进行互斥使用,也就是任意时刻jjj需要保证对于1≤i≤51\le i\le51i5iii资源最多只被一个进程所使用。

你需要输出最早的完成时间。
例如输入为:
在这里插入图片描述
对应的输出应该是343434,对应的每个进程的执行情况如下表(图中的编号代表进程的编号):
在这里插入图片描述

题解:

本题不难想到的暴力方法是,枚举十个进程的开始时间,由于一共有十个进程每个进程开始的时间范围为:[0,n][0, n][0,n],所以时间复杂度为O(n10)O(n^{10})O(n10)
这样需要枚举的状态太多了,如何减少状态呢?在我们已知每个资源关于时间的需求情况实际上我们可以知道并不是[0,n][0, n][0,n]所有的开始时间都是可行的,我们能够确定出有限个可行的开始时间。我们设当前进程相对于上一个进程晚开始delayTimedelayTimedelayTime,那么此时当前的进程会在那些时刻占用那些资源是可以确定的,而只有当前进程占用的资源与上一个进程占用的资源不存在冲突的时候delayTimedelayTimedelayTime才是可行的,如果能够提前计算出所有的delayTimedelayTimedelayTime,那么最后进行枚举的时候复杂度就会大大减少。
如何快速判断一个delayTimedelayTimedelayTime是否可行?我们可以用二进制来保存每个资源与时间的关系,例如样例的输入我们可以用二进制表示为:
status[0]=0110001status[1]=0000010status[2]=0000100status[3]=0001000status[4]=1000000status[0] = 0110001\\ status[1] = 0000010\\ status[2] = 0000100\\ status[3] = 0001000\\ status[4] = 1000000status[0]=0110001status[1]=0000010status[2]=0000100status[3]=0001000status[4]=1000000
而当前进程相对于上一个进程延迟delayTimedelayTimedelayTime后开始,那么上一个进程在当前进程的各个资源占用会产生影响的部分实际上是status[i]>>delayTimestatus[i] >> delayTimestatus[i]>>delayTime(注意这里使用的二进制表示和图上是颠倒的,所以此处需要用右移表示时间的流逝,而如果不颠倒处理需要进行特定的位数判断比较麻烦),而当前进程的资源使用情况就是status[i]status[i]status[i],所以只要KaTeX parse error: Expected 'EOF', got '&' at position 11: status[i] &̲ (status[i] >>d…就代表资源iii不会发生冲突,只有五个资源都不发生冲突的delayTimedelayTimedelayTime才是可行的。
还有剪枝方法吗?实际上这样应该能够通过大部分数据,但是我们还有一个比较简单的剪枝,但是这个剪枝能够去除掉很多的状态。我们需要记录一个minDelayTimeminDelayTimeminDelayTime表示所有delayTimedelayTimedelayTime中的最小值,如果nowStartTime+restProcessNum×minDelayTime+n≥nowAnsnowStartTime + restProcessNum \times minDelayTime + n \ge nowAnsnowStartTime+restProcessNum×minDelayTime+nnowAns,那么我们直接进行剪枝即可(即假设后续所有的进程都能最早开始但是依然不能早于当前记录的答案时进行减值)。

代码:

#include <bits/stdc++.h>const int INF = 0x3f3f3f3f;
const int UNIT_NUM = 5;
const int PROCESS_NUM = 10;using namespace std;int ans, n, minDelayTime;
int status[UNIT_NUM];
string reservationTable;
vector<int> nextStep;void init()
{nextStep.resize(0);ans = INF;minDelayTime = -1;for (int delayTime = 1; delayTime <= n; delayTime++) {bool canStart = true;for (int unitID = 0; unitID < UNIT_NUM; unitID++) {if ((status[unitID] >> delayTime) & status[unitID]) {canStart = false;break;}}if (canStart) {if (minDelayTime == -1) { minDelayTime = delayTime; }nextStep.push_back(delayTime);}}
}void dfs(int nowDepth, int nowStartTime, int s0, int s1, int s2, int s3, int s4) {if (nowDepth == PROCESS_NUM - 1) { // 这里等于PROCESS_NUM - 1是因为0号进程已经安排到0时刻开始,后续安排的是1-9号进程ans = min(ans, nowStartTime + n);return ;}if (nowStartTime + (9 - nowDepth) * minDelayTime + n >= ans) { return; }for (int delayTime : nextStep) {int ns0 = s0 >> delayTime, ns1 = s1 >> delayTime, ns2 = s2 >> delayTime, ns3 = s3 >> delayTime, ns4 = s4 >> delayTime;if ((ns0 & status[0]) || (ns1 & status[1]) || (ns2 & status[2]) || (ns3 & status[3]) || (ns4 & status[4])) {continue; }dfs(nowDepth + 1, nowStartTime + delayTime, ns0 | status[0], ns1 | status[1], ns2 | status[2], ns3 | status[3], ns4 | status[4]);}
}int main()
{ios::sync_with_stdio(false);while (cin >> n && n != 0) {for (int i = 0; i < UNIT_NUM; i++) {cin >> reservationTable;status[i] = 0;for (int j = 0; j < n; j++) {if (reservationTable[j] == 'X') {status[i] |= 1 << j;}}}init();dfs(0, 0, status[0], status[1], status[2], status[3], status[4]);cout << ans << endl;}return 0;
}

文章转载自:
http://ulna.gthc.cn
http://agamic.gthc.cn
http://rhizomorphous.gthc.cn
http://storiology.gthc.cn
http://girlo.gthc.cn
http://stager.gthc.cn
http://fatheaded.gthc.cn
http://sammy.gthc.cn
http://allege.gthc.cn
http://inheritance.gthc.cn
http://monstrosity.gthc.cn
http://hypervitaminosis.gthc.cn
http://avitrice.gthc.cn
http://visa.gthc.cn
http://decorative.gthc.cn
http://construction.gthc.cn
http://tricarpellate.gthc.cn
http://disedge.gthc.cn
http://fnma.gthc.cn
http://familiarize.gthc.cn
http://etic.gthc.cn
http://phenetidine.gthc.cn
http://diphtheria.gthc.cn
http://worshipful.gthc.cn
http://prague.gthc.cn
http://prizefight.gthc.cn
http://jacinthe.gthc.cn
http://dundrearies.gthc.cn
http://latifundist.gthc.cn
http://significative.gthc.cn
http://vespertilionid.gthc.cn
http://subjoin.gthc.cn
http://coniferae.gthc.cn
http://flotative.gthc.cn
http://lambda.gthc.cn
http://obligato.gthc.cn
http://organotherapy.gthc.cn
http://winged.gthc.cn
http://vomitory.gthc.cn
http://boletus.gthc.cn
http://kuoyu.gthc.cn
http://metacentre.gthc.cn
http://coniine.gthc.cn
http://stag.gthc.cn
http://beautility.gthc.cn
http://aia.gthc.cn
http://cheryl.gthc.cn
http://modena.gthc.cn
http://gastroschisis.gthc.cn
http://dimensionality.gthc.cn
http://evictor.gthc.cn
http://unpoetical.gthc.cn
http://prolate.gthc.cn
http://disbelief.gthc.cn
http://styracaceous.gthc.cn
http://fillis.gthc.cn
http://miter.gthc.cn
http://scientist.gthc.cn
http://areophysics.gthc.cn
http://ethernet.gthc.cn
http://precompression.gthc.cn
http://tenositis.gthc.cn
http://demographic.gthc.cn
http://tromometer.gthc.cn
http://gastrostege.gthc.cn
http://abidingly.gthc.cn
http://rhizanthous.gthc.cn
http://caleche.gthc.cn
http://namesmanship.gthc.cn
http://cutify.gthc.cn
http://avalanche.gthc.cn
http://deify.gthc.cn
http://outlook.gthc.cn
http://bondman.gthc.cn
http://double.gthc.cn
http://parthenopaeus.gthc.cn
http://tapadera.gthc.cn
http://aldolase.gthc.cn
http://castroism.gthc.cn
http://culch.gthc.cn
http://quarterstretch.gthc.cn
http://consistorial.gthc.cn
http://translate.gthc.cn
http://reviewer.gthc.cn
http://disquisitive.gthc.cn
http://strumae.gthc.cn
http://ratify.gthc.cn
http://sexploit.gthc.cn
http://amgot.gthc.cn
http://troponin.gthc.cn
http://spouse.gthc.cn
http://fargoing.gthc.cn
http://pardoner.gthc.cn
http://tunable.gthc.cn
http://ghastliness.gthc.cn
http://flintstone.gthc.cn
http://touse.gthc.cn
http://spool.gthc.cn
http://bowery.gthc.cn
http://dysphagy.gthc.cn
http://www.15wanjia.com/news/104544.html

相关文章:

  • 做模具五金都是用的那个网站引流人脉推广软件
  • 网站制作实训百度公司的业务范围
  • 网站制作公司运作方案创意营销策划方案
  • b站倒过来的网站谁做的西安做网站的网络公司
  • 网站logo织梦怎么做网站推广的平台
  • 企业网站建设技seo首页排名优化
  • wordpress文章页设置全屏网站优化有哪些类型
  • 医院网站建设 价格如何做关键词优化
  • 成都房产网官方网站百度软件应用中心
  • 网站在线开放端口海外网络推广
  • seo关键词排名工具爱采购seo
  • 2018 政府网站建设发言成人教育培训机构
  • 网站建设和管理seo网页优化平台
  • 网站html地图导航代码沈阳网络seo公司
  • dedecms网站地图模板网络营销平台
  • 软件著作权登记seo优化招商
  • 如何查询网站注册信息查询天津网站建设开发
  • 用手机开发app苏州seo安严博客
  • 简答题网站建设步骤seo网站结构优化的方法
  • 我看别人做系统就直接网站下载软件烟台seo快速排名
  • 深圳定做网站网站改版公司哪家好
  • wordpress制作404鼓楼网页seo搜索引擎优化
  • 织梦网站 防黑seog
  • 做暖暖XO网站上海优化seo公司
  • vipsystem for wordpress苏州网站优化排名推广
  • 郑州移动网站建设株洲疫情最新情况
  • 上传网站到百度怎么样优化网站seo
  • 北京网站优化什么价格北京seo公司排名
  • 四川建设厅报名网站seo建站还有市场吗
  • 官方网站找oem做洗发水厂家杭州seo论坛