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并行程序基础 一.有关线程你必须知道的事 进程与线程 在等待面向线程设计的计算机结构中,进程是线程的容器.我们都知道,程序是对于指令.数据及其组织形式的描述,而进程是程序的实体. 线程是轻量级 ...
随机推荐
- 二、存储管理器--SDRAM
2.1 硬件结构 2.1.1 硬件框图 CPU 通过存储管理器来读取 SDRAM 网卡 等外部设备,CPU不管外部设备是怎么样的,只是读存储管理器中的地址 CPU从0x30000000地址读取数据. ...
- IT阅读——关于“业务”
本文转自http://www.cnblogs.com/beijiguangyong/archive/2012/11/12/2767054.html 开发当中常常听说“业务”这个词,什么“业务为王”之类 ...
- C语言入门教程-(6)运算符
1.运算符概述 运算符是一种编译器执行特定的数学或逻辑操作的符号.C语言提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 其他运算符 2.算术运算符 算术 ...
- luogu P1627 [CQOI2009]中位数
传送门 要求有多少个长度为奇数的区间满足某个数为区间中位数 这样的区间,大于中位数的数个数 等于 小于中位数的数个数 用类似于前缀和的方法,设\(X_i\)为\(i\)和数\(b\)形成的区间内,大于 ...
- $Miller Rabin$总结
\(Miller Rabin\)总结: 这是一个很高效的判断质数的方法,可以在用\(O(logn)\) 的复杂度快速判断一个数是否是质数.它运用了费马小定理和二次探测定理这两个筛质数效率极高的方法. ...
- 浏览器调用接口发现Provisional headers are shown
一次请求时候报错 无论如何也找不到错误,后台接口和前端请求都是正确的.后来发现是 自己浏览器上装了广告拦截的插件 把我这个请求给拦截 果断卸载插件立马就好了.
- 位运算&,逻辑与and
在python中,0是否 >>> True and True True >>> True and True True >>> 2 and 4 4 ...
- POI导出带格式的Excel模板——(六)
Jar包
- linux 同步IO: sync、fsync与fdatasync、sys_sync【转】
本文转自:http://blog.csdn.net/cywosp/article/details/8767327 和 http://www.2cto.com/os/201204/126687.html ...
- Bootstrap3.0学习第四轮(排版)
详情请查看http://aehyok.com/Blog/Detail/10.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...