6-1 并行程序模拟 uva210
用到了 deque 和queue
操作说明:
queue qu: qu.push(x);
int d=qu.front();
qu.pop(); 和栈一样只有push和pop操作,front是看第一个! 栈里面是top
deque de: de.push_front(x);
de.push_back(x);
int x=de.front();
de.pop_front();
de.back_front();//push 和pop 加上后缀
检查了一个小时 发现是头文件有问题 :当使用bool时 不能用 include<bits/stdc++.h>
一开始题目理解错误 弄了好久 原来是一个程序一个程序往下!明明说的很清楚
一个模拟题 也不算太难 熟练使用queue和deque 的各种操作就好了
1. s == "end" string 类型可以直接这样判断
2、其中的 if(s == "") continue; 没收各种垃圾语句和字符
#include<bits/stdc++.h>
using namespace std;
int val[],t[],Q,q[];
bool lock;
deque<int>de;
queue<int>zz;
vector<string>ans[]; void run(int x); int main()
{
int cas;cin>>cas;
while(cas--)
{ int n;
cin>>n;
for(int i=;i<;i++) cin>>t[i];
cin>>Q;getchar();
for(int i=;i<=n;i++)
{ ans[i].clear();
string s;
while(getline(cin,s))
{
if(s=="end")break;
else ans[i].push_back(s);
}
de.push_back(i); }
memset(q,,sizeof(q));
memset(val,,sizeof(val)); while(!de.empty())//通过队列里是否还有任务等待判定
{ int x=de.front();
de.pop_front(); run(x); } } return ;
} void run(int x)
{ int v=;
int t1=Q; while(t1>)
{ string aim=ans[x][ q[x] ];//每次都要读取命令 放在外面是错的
if(aim[]=='=')
{ t1-=t[];
v=aim[]-'';if(isdigit(aim[]))v=v*+aim[]-'';
val[ aim[]-'a' ]=v;
}
else if(aim[]=='p')
{
t1-=t[];
printf("%d: %d\n",x,val[ aim[]-'a' ]);
}
else if(aim[]=='l')
{
t1-=t[];
if(!lock) lock=!lock;
else {zz.push(x);return ;}
}
else if(aim[]=='u')
{
t1-=t[];
if(lock) lock=!lock;
if(!zz.empty())//题意!
{
int d=zz.front();zz.pop();
de.push_front(d); } }
else return ;
q[x]++;//放在上面自加是错误的 说明进入阻止队列时那次不算
} de.push_back(x); }
6-1 并行程序模拟 uva210的更多相关文章
- uva 210 - Concurrency Simulator (并行程序模拟)
from CSDN: https://blog.csdn.net/su_cicada/article/details/87898579 例题6-1 并行程序模拟( Concurrency Simula ...
- 并行程序模拟(Concurrency Simulator, ACM/ICPC World Finals 1991,Uva210)
任务介绍 你的任务是模拟n个程序的并行运算.(按照输入编号为1~n)的并行执行. 代码实现 #define LOCAL #include<bits/stdc++.h> using name ...
- UVa 210 并行程序模拟(deque)
题意: 模拟n个程序运行 格式一共有5种:var = constant(赋值):print var(打印):lock:unlock:end, 上述5种语句分别需要t1.t2.t3.t4.t5单位时间 ...
- 【MPI学习6】MPI并行程序设计模式:具有不连续数据发送的MPI程序设计
基于都志辉老师<MPI并行程序设计模式>第14章内容. 前面接触到的MPI发送的数据类型都是连续型的数据.非连续类型的数据,MPI也可以发送,但是需要预先处理,大概有两类方法: (1)用户 ...
- WCF技术剖析之一:通过一个ASP.NET程序模拟WCF基础架构
原文:WCF技术剖析之一:通过一个ASP.NET程序模拟WCF基础架构 细算起来,已经有好几个月没有真正的写过文章了.近半年以来,一直忙于我的第一本WCF专著<WCF技术剖析>的写作,一直 ...
- Java并发程序设计(二)Java并行程序基础
Java并行程序基础 一.线程的生命周期 其中blocked和waiting的区别: 作者:赵老师链接:https://www.zhihu.com/question/27654579/answer/1 ...
- N体运动的程序模拟
这依然是与<三体>有关的一篇文章.空间中三个星体在万有引力作用下的运动被称之为三体问题,参见我的上一篇文章:三体运动的程序模拟.而这一节,对三体问题进行了扩展,实现了空间中N个星体在万有引 ...
- C程序模拟实现银行家算法
C程序模拟实现银行家算法 上周又做操作系统实验,题目是用程序模拟实现银行家算法,写了半天还真有点晕,主要是因为想尽可能符合课本上的描述,所以写出来的程序就比较恶心了,好了,银行家算法就不多说了,不了解 ...
- JAVA并行程序基础
JAVA并行程序基础 一.有关线程你必须知道的事 进程与线程 在等待面向线程设计的计算机结构中,进程是线程的容器.我们都知道,程序是对于指令.数据及其组织形式的描述,而进程是程序的实体. 线程是轻量级 ...
随机推荐
- Ubuntu18.04下vim的tab缩进设置为4个空格
在/etc/vim/vimrc最后添加如下内容 set ts = 4 set exbandtab set autoindent
- Winfrom多文档界面实现
Winfrom多文档界面实现 闲来无事,研究了下比较常用的多文档界面风格,网上找了好多例子,最终实现.记录一下 废话不多说,先上个效果: 默认打开我的桌面,首页不允许关闭,xtraTabPage动态添 ...
- jQuery - 字符串与json对象之间的转换
将字符串转换为json 在js中,我们是这样写的 var _data = eval('(' + data + ')'); 原理:eval() 函数可计算某个字符串,并执行其中的的 JavaScript ...
- Debian Linux Error “Driver 'pcspkr' is already registered, aborting...”
问题: Error: Driver ‘pcspkr’ is already registered, aborting… 解决: [root@reistlin.com ~]# echo "bl ...
- chattr的使用
让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作: chattr +a /home/caolei/.bash_history 查看lsattr /home/caolei/.bash_ ...
- Ajax jsonp 跨域请求实例
跨域请求 JSONP的缺点则是:它只支持GET请求而不支持POST等其它类型的HTTP请求:它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题. $. ...
- nginx配置集群
1.准备两个Tomcat 首先在Linux机器上部署两个Tomcat,端口分别为80和8080 2.分别部署测试应用 在两个tomcat下分别部署同一个应用testapp,很简单,就是在页面显示当前系 ...
- Python单元测试unittest - 单元测试框架
一.unittest简介 unitest单元测试框架最初是有JUnit的启发,它支持测试自动化,共享测试的设置和关闭代码,将测试聚合到集合中,以及测试与报告框架的独立性. 二.unittest相关概念 ...
- mysql忘记root密码的处理方式
1.停用mysql服务 service mysqld stop 2.修改my.cnf 利用vim命令打开mysql配置文件my.cnf 添加skip-grant-tables,添加完成后,执行w ...
- centos6.5报错:checking filesystems failed问题处理
centos系统重启报错:checking filesystems failed checking filesystems /dev/mapper/vg_0-root: 搜了下可能是文件系统损坏 根据 ...