【习题 7-5 UVA-690】Pipeline Scheduling
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
一定在这里写完思路再敲代码!!!
处理出5个工作单元在哪些时刻会被用到。
->设为initstatu
因为每次都会面临之前已经用了一段程序,而现在要走下一步的情况
->但有一些地方是肯定已经不能走了的。
->我们可以预处理出来哪些地方是可以走的。
->剩下的.可能不能走.我们再额外处理就好
->这样可以节省很多的时间。
然后在搜索的时候.维护长度为n的statu.
(即不断更新末尾那一段,哪个时间是不能用的->有冲突的
假设要在偏移量为i的地方开始下一个程序。
直接看看statu>>i 和initstatu的and值是不是大于0.
(是一个5维的statu
等于0就说明可以放
然后更新状态。
statu = (statu>>i)&(initstatu);
【代码】
#include <bits/stdc++.h>
using namespace std;
const int N = 20+5;
int initstatu[10],n,nowstatu[10],ans = 1e8;
int can[N];
char s[N];
bool ok(int *nowstatu,int d){
for (int i = 1;i <= 5;i++){
if ((nowstatu[i]>>d)&initstatu[i]) return false;
}
return true;
}
void dfs(int dep,int s){
if (s+n>ans) return;
if (dep > 10){
ans = min(ans,s+n);
return;
}
if (s+n+(10-dep)*can[1]>ans) return;
int tempstatu[10];
for (int d = 1;d <= can[0];d++){
if (!ok(nowstatu,can[d])) continue;
//ok
//getnewstate
for (int i = 1;i <= 5;i++) tempstatu[i] = nowstatu[i];
for (int i = 1;i <= 5;i++) nowstatu[i] = (nowstatu[i]>>can[d])|initstatu[i];
dfs(dep+1,s+can[d]);
for (int i = 1;i<= 5;i++) nowstatu[i] = tempstatu[i];
}
}
int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
while (cin >> n && n){
memset(initstatu,0,sizeof initstatu);
for (int i = 1;i <= 5;i++){
cin >> (s+1);
int now = 1;
for (int j = 1;j <= n;j++){
if (s[j]=='X') initstatu[i] |= now;
now = now*2;
}
}
can[0] = 0;
for (int i = 1;i <= n;i++)
if (ok(initstatu,i)){
can[0]++;
can[can[0]] = i;
}
for (int i = 1;i <= 5;i++) nowstatu[i] = initstatu[i];
ans = n*10;
dfs(2,0);
cout << ans << endl;
}
return 0;
}
【习题 7-5 UVA-690】Pipeline Scheduling的更多相关文章
- UVA 690 Pipeline Scheduling
https://vjudge.net/problem/UVA-690 题目 你有一台包含5个工作单元的计算机,还有10个完全相同的程序需要执行.每个程序需要$n(n<20)$个时间片来执行,可以 ...
- 【暑假】[深入动态规划]UVa 1380 A Scheduling Problem
UVa 1380 A Scheduling Problem 题目: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=41557 ...
- UVA 1380 A Scheduling Problem
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- UVA 690 PipelineScheduling 位运算+dfs+剪枝
一开始最容易想到间隔最多为n,但是结点还是太多了,需要优化. 预处理:预判一下并保存下一个可以放的位置距离之前的距离.这样可以减少很多判断. 最优化剪枝:如果当前长度+剩下没放的程序*最短间隔如果大于 ...
- ACM训练计划建议(写给本校acmer,欢迎围观和指正)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
- ACM训练计划建议(转)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
- 动态规划 Dynamic Programming 学习笔记
文章以 CC-BY-SA 方式共享,此说明高于本站内其他说明. 本文尚未完工,但内容足够丰富,故提前发布. 内容包含大量 \(\LaTeX\) 公式,渲染可能需要一些时间,请耐心等待渲染(约 5s). ...
- UVA 607 二十二 Scheduling Lectures
Scheduling Lectures Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submi ...
- UVa第五章STL应用 习题((解题报告))具体!
例题5--9 数据库 Database UVa 1592 #include<iostream> #include<stdio.h> #include<string.h&g ...
随机推荐
- MySQL 使用自增ID主键和UUID 作为主键的优劣比較具体过程(从百万到千万表记录測试)
主键类型 SQL语句 运行时间 (秒) (1)模糊范围查询1000条数据,自增ID性能要好于UUID 自增ID SELECT SQL_NO_CACHE t.* FROM test.`UC_US ...
- Connect the Campus (Uva 10397 Prim || Kruskal + 并查集)
题意:给出n个点的坐标,要把n个点连通,使得总距离最小,可是有m对点已经连接,输入m,和m组a和b,表示a和b两点已经连接. 思路:两种做法.(1)用prim算法时,输入a,b.令mp[a][b]=0 ...
- WebForms简介
http://www.w3school.com.cn/aspnet/aspnet_intro.asp ASP.NET 是下一代 ASP,不是 ASP 的更新版本. https://docs.micro ...
- Delegates, Events, and Anonymous Methods 委托、事件与匿名方法
http://www.cnblogs.com/r01cn/archive/2012/11/30/2795977.html
- Sqoop 数据导入导出实践
Sqoop是一个用来将hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:mysql,oracle,等)中的数据导入到hadoop的HDFS中,也可以将HDFS的数据导入到 ...
- Eight hdu 1043 poj 1077
Description The 15-puzzle has been around for over 100 years; even if you don't know it by that name ...
- 963B:Destruction of a Tree
You are given a tree (a graph with n vertices and n - 1 edges in which it's possible to reach any ve ...
- wordcontent小结
gitee地址: https://gitee.com/yzpdegit/test 问题描述: 计算一个文件中所包含的单词数,字符个数,行数 需求分析: WordCount的需求可以概括为:对程序设计语 ...
- chgrp---改变文件或目录所属的用户组
chgrp命令用来改变文件或目录所属的用户组.该命令用来改变指定文件所属的用户组.其中,组名可以是用户组的id,也可以是用户组的组名.文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描 ...
- Python学习第一篇
好久没有来博客园了,今天开始写自己学习Python和Hadoop的学习笔记吧.今天写第一篇,Python学习,其他的环境部署都不说了,可以参考其他的博客. 今天根据MachineLearning里面的 ...