码迷,mamicode.com
首页 > 其他好文 > 详细

6-1 并行程序模拟 uva210

时间:2019-01-18 00:50:19      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:c++   文件   etl   pen   style   front   splay   mem   git   

一个较难得模拟题 

用到了 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>
#include<iostream>
#include<string>
#include<string.h>
#include<cstdio>
#include<deque>
#include<vector>
#include<queue>
using namespace std;
int q[1000]={0};
int val[26]={0};
bool lock;
 int n,t[6],Q;

 vector<string>ss[1000];
         deque<int>de;//总队列
         queue<int>qu;//阻止队列


void run(int x)
{
    string aim;


    int t1=Q;int v;
    while(t1>0)
    {
        aim=ss[x][ q[x] ];
        if(aim[2]===)
        {   t1-=t[0];
            v=aim[4]-0;
            if(isdigit(aim[5]))v=v*10+aim[5]-0;
            val[ aim[0]-a ]=v;

        }

        else if(aim[0]==p)
        {
            t1-=t[1];
            printf("%d: %d\n",x,val[aim[6]-a]);
        }

        else if(aim[0]==l)
        {
            t1-=t[2];
            if(lock) {
                qu.push(x);

                return ;
            }
            else lock=true;


        }
        else if(aim[0]==u)
        {   lock=false;
            t1-=t[3];
          if(!qu.empty()){
            int d=qu.front();
            qu.pop();
            de.push_front(d);}


        }
        else return ;

        q[x]++;
    }



    de.push_back(x);


}



int main()
{

    int cas;
    cin>>cas;
    while(cas--)
    {





        cin>>n;
        for(int i=0;i<5;i++)
            cin>>t[i];
        cin>>Q;

        string s;
        for(int i=1;i<=n;i++)
        {   ss[i].clear();
            de.push_back(i);
           while( 1 )
           {getline(cin,s);
            if(s == "") continue;//???

            ss[i].push_back(s);
            if(s == "end") break;

           }


        }
        memset(q,0,sizeof(q));
        memset(val,0,sizeof(val));
        while(!de.empty())
        {

            int x=de.front();
            de.pop_front();
            run(x);


        }
if(cas) printf("\n");



    }




    return 0;
}
View Code

 

6-1 并行程序模拟 uva210

标签:c++   文件   etl   pen   style   front   splay   mem   git   

原文地址:https://www.cnblogs.com/bxd123/p/10285548.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!