【雙端佇列】例題6-1 UVa 210
/*
演算法競賽入門 LRJ 例題6-1(UVa 210)Concurrency Simulator
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
#include<map>
#include<queue>
#include<cmath>
#include<algorithm>
#include<deque>
typedef long long LL;
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
const int INF=0x3f3f3f3f;
const int N = 10010;
int mp[10];
int val[30];
int id[N];
string res[N];
deque<int> Q;
deque<int> stop;
int n,q;
int change(string x)
{
int sum = 0;
for(int i = 3; i < x.size(); i++)
{
if(x[i] >= '0' && x[i] <= '9')
sum = sum*10+(x[i]-'0');
}
return sum;
}
int lock;
void solve(int x)
{
int time = q;
while(time > 0)
{
string now = res[id[x]];
//cout << " now " << now << endl;
if(now[2] == '=')
{
val[now[0]-'a'] = change(now);
time -= mp[0];
}
else if(now[2] == 'i')
{
printf("%d: %d\n",x,val[now[6]-'a']);
time -= mp[1];
}
else if(now[2] == 'c')
{
if(lock == 1)
{
stop.push_back(x);
return ;
}
lock = 1;
time -= mp[2];
}
else if(now[2] == 'l')
{
if(!stop.empty())
{
int temp = stop.front();
stop.pop_front();
Q.push_front(temp);
}
lock = 0;
time -= mp[3];
}
else
{
//End = 1;
time -= mp[4];
return ;
}
id[x]++;
}
Q.push_back(x);
return ;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d%d%d%d%d",&n,&mp[0],&mp[1],&mp[2],&mp[3],&mp[4],&q);
memset(val,0,sizeof(val));
Q.clear();
stop.clear();
getchar();
int num = 0;
for(int i = 1; i <= n; i++)
{
Q.push_back(i);
getline(cin,res[num++]);
id[i] = num-1;
while(res[num-1] != "end")
getline(cin,res[num++]);
}
lock = 0;
while(!Q.empty())
{
int x = Q.front();
Q.pop_front();
solve(x);
}
if(T)
puts("");
}
return 0;
}
相關文章
- 雙端佇列佇列
- 單調佇列雙端佇列佇列
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- 資料結構之「雙端佇列」資料結構佇列
- python雙端佇列的原理分析Python佇列
- PTA 雙端佇列 資料結構佇列資料結構
- hdu5380 貪心+雙端佇列佇列
- 同步容器、併發容器、阻塞佇列、雙端佇列與工作密取佇列
- 佇列-單端佇列佇列
- ArrayDeque雙端佇列 使用&實現原理分析佇列
- ArrayDeque(JDK雙端佇列)原始碼深度剖析JDK佇列原始碼
- LeetCode題解:641. 設計迴圈雙端佇列,使用佇列,JavaScript,詳細註釋LeetCode佇列JavaScript
- python資料結構與演算法——棧、佇列與雙端佇列Python資料結構演算法佇列
- huawei0821筆試第二題筆記:雙端佇列deque筆試筆記佇列
- 前端學習 資料結構與演算法 快速入門 系列 —— 佇列和雙端佇列前端資料結構演算法佇列
- 面經手冊 · 第9篇《佇列是什麼?什麼是雙端佇列、延遲對列、阻塞佇列,全是知識盲區!》佇列
- 4_4雙棧佇列佇列
- uva10954Add All(貪心+優先佇列)佇列
- uva 11995 棧,佇列,優先佇列,等基本資料結構的應用與理解佇列資料結構
- 例題6-3 Matrix Chain Multiplication ,Uva 442AI
- 【棧解析表示式】例題6-3 UVa - 442
- [筆記] 解碼Nginx:雙向佇列(Queue)筆記Nginx佇列
- 全網最適合入門的物件導向程式設計教程:41 Python 常用複合資料型別-佇列(FIFO、LIFO、優先順序佇列、雙端佇列和環形佇列)物件程式設計Python資料型別佇列
- 025 透過連結串列學Rust之使用棧實現雙端佇列Rust佇列
- 025 通過連結串列學Rust之使用棧實現雙端佇列Rust佇列
- 佇列、阻塞佇列佇列
- [Leetcode]雙項佇列解決滑動視窗最大值難題LeetCode佇列
- RabbitMQ 消費端限流、TTL、死信佇列MQ佇列
- 3-主題和佇列佇列
- 優先佇列的學習記錄--例題:Expedition(POJ2431)佇列
- 利用順序儲存結構實現雙端佇列的入隊和出隊操作佇列
- 佇列 和 迴圈佇列佇列
- 【佇列】【懶排序】佇列Q佇列排序
- 9. 題目:對佇列實現棧&用棧實現佇列佇列
- 效能優化-使用雙buffer實現無鎖佇列優化佇列
- 看動畫學演算法之:雙向佇列dequeue動畫演算法佇列
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- 關於PHP佇列的問題PHP佇列