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并行程序基础 一.有关线程你必须知道的事 进程与线程 在等待面向线程设计的计算机结构中,进程是线程的容器.我们都知道,程序是对于指令.数据及其组织形式的描述,而进程是程序的实体. 线程是轻量级 ...
随机推荐
- EF crud操作
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- UE4的AI学习(1)——基本概念
AI学习当中,不学习行为树基本概念就不能明白具体实例中的操作意义,但是没有经过具体实例实验,又觉得基本概念抽象难以理解.建议先泛读(1)(2)后再对具体的细节进行死磕,能较深的理解行为树的具体概念.第 ...
- gulp+webpack构建配置
使用构建工具之前我觉得前端好蠢,css没有变量,不能写循环,为了兼容要写好多前缀,hmtl写多页面中有同一个header,我就粘贴复制,然后修改的时候每个都要改. 我还不会压缩和合并,每次都要按F5刷 ...
- Android BroadcastReceiver 面试解析
- Ubuntu 14.04 apt-get更换阿里云源
https://blog.csdn.net/satomic/article/details/78997611
- pl/sql Devloper 快捷键__新建sql窗口
首先,打开PLSQL,菜单栏--->首选项----->键配置 其次,点击你要增加快捷键的选项,直接键盘上输入快捷键: 比如你要修改为CTRL+N,直接在键盘上按出CTRL+N即可. ESC ...
- ROS中的CMakeLists.txt
在ROS的编程过程中,如果CMakeLists.txt如果写不好,编译就很难成功.如果看不懂CMakeLists.txt那么很多错误你也不知道时什么回事.所以深入了解它是很有必要的.现在我们就来看看它 ...
- Shell高级编程学习笔记(基础篇)
目录 1.shell脚本的执行方法 2.shell的变量类型 3.shell特殊变量 4.变量子串的常用操作 5.批量修改文件名实践 6.变量替换 7.在shell中计算字符串长度的方法 ...
- JavaScript对象复制(一)(转载)
在JavaScript很多人复制一个对象的时候都是直接用"=",因为大家都觉得脚本语言是没有指针.引用.地址之类的,所以直接用"="就可以把一个对象复制给另外一 ...
- CSS在项目中常用的属性总结
1.媒体查询 2.如何快速生成适配各种浏览器的属性. 3.全面进军移动app开发.