UVa 210 - Concurrency Simulator(模拟+双端队列)
来源:互联网 发布:js数组添加数组元素 编辑:程序博客网 时间:2024/05/17 21:41
模拟执行各种指令,很久之前的一道例题,书上给出了思路。
使用双端队列储存程序,根据相应的指令对队列进行调整。
#include<cstdio>#include<cstring>#include<cctype>#include<queue>using namespace std;const int maxn=1010;bool locked;char pro[maxn][10];int n,tq,c[5],var[26],ip[maxn];deque<int> ready;queue<int> block;void run(int pid){ int q=tq; while(q>0){ char *p=pro[ip[pid]]; switch(p[2]){ case '=': var[p[0]-'a']=isdigit(p[5])?(p[4]-'0')*10+p[5]-'0':p[4]-'0'; q-=c[0]; break; case 'i': printf("%d: %d\n",pid+1,var[p[6]-'a']); q-=c[1]; break; case 'c': if(locked){block.push(pid);return;} locked=true; q-=c[2]; break; case 'l': locked=false; if(!block.empty()){ int pid2=block.front(); block.pop(); ready.push_front(pid2); } q-=c[3]; break; case 'd': return; } ++ip[pid]; } ready.push_back(pid);}int main(){ int t; scanf("%d",&t); while(t--){ scanf("%d%d%d%d%d%d%d\n",&n,&c[0],&c[1],&c[2],&c[3],&c[4],&tq); memset(var,0,sizeof(var)); int line=0; for(int i=0;i<n;++i){ fgets(pro[line++],maxn,stdin); ip[i]=line-1; while(pro[line-1][2]!='d') fgets(pro[line++],maxn,stdin); ready.push_back(i); } locked=false; while(!ready.empty()){ int pid=ready.front(); ready.pop_front(); run(pid); } if(t) printf("\n"); } return 0;}
0 0
- UVa 210 - Concurrency Simulator(模拟+双端队列)
- UVa 210 Concurrency Simulator(双端队列)
- UVA - 210 - Concurrency Simulator <双端队列>
- UVa 210 Concurrency Simulator(双端队列)
- UVa 210 Concurrency Simulator(双端队列)
- 210 - Concurrency Simulator【模拟、双端队列】
- 【日常学习】【双端队列】 Uva - 210 Concurrency Simulator题解
- uva 210 Concurrency Simulator (并行堆栈模拟)
- UVA 210 Concurrency Simulator(deque,queue,模拟)
- UVA210 concurrency simulator (双向队列 & 模拟)
- UVA - 210 Concurrency Simulator
- Uva - 210 - Concurrency Simulator
- UVa 210 Concurrency Simulator
- 【UVa】[210]Concurrency Simulator
- uva 210 Concurrency Simulator
- deque双端队列&&UVa210 Concurrency Simulator(并行程序模拟)的理解与解析
- UVA 210(p139)----Concurrency Simulator
- 队列数组存储Uva Concurrency Simulator
- Linux编程里getopt_long_only函数用法详解
- HTML5新特性基础学习笔记上
- HDU 1757 A Simple Math Problem 矩阵快速幂
- FORM开发:提示无效数字
- 推荐 2013 年最新的 10 款 jquery 插件
- UVa 210 - Concurrency Simulator(模拟+双端队列)
- FineReport与Web集成
- Windows 8.1下安装Mac OS X 10.8虚拟机
- 高等数学总结(完)
- SSH 原理与运用
- 编程珠玑之第三章习题8
- 短信的广播
- android中listView中实现checkbox多选
- uploadify 3.2 + mvc3 在谷歌及Firefox下请求页面两次的问题