UVa12100 Printer Queue (打印队列)

ProLightsfx 2015-10-17 115 10/17

                  12100  Printer Queue 双端队列(deque)

 My Solution

双端队列(deque)

#include <iostream>
#include <deque>

using namespace std;
bool compar(const deque<int> &de)
{
    int cot=0;

    for(int i=1;i<de.size();i++) //最后一次比较是比较到最后一个的前一个和最后一个
/*!              ^^^^^^^^^^^ 轮到的这个和后面所有的分别比较*/
    {
        if(de[0]>=de[i]) cot++;   //从第二个开始跟它比
    }
    if(cot==de.size()-1) return true;  //这里完美的把单个元素的集合包含进去了
    else return false;
}

int main()
{
    deque<int> priqu;
    int T=0,n,place,tem,time;
    cin>>T;
    while(T--){
        cin>>n>>place;
        priqu.clear();
        for(int i=0;i<n;i++){
            cin>>tem;
            priqu.emplace_back(tem);
        }
        time=0;
        int gol=place;
        while(gol>-1){  //对于本来就在首位i的就不对了,故不是gol>0而是>-1
            int i=priqu[0];
          //priqu.pop_front();必须放里面
            gol--; //******因为下面这里要用到
            int siz0=priqu.size();
            if(compar(priqu)) {
                time++;      //打印才要时间哦
                priqu.pop_front();
                continue;
            }
            else {
                priqu.pop_front();
                priqu.emplace_back(i);
                if(gol==-1) gol+=siz0;  //!应当是==-1的时候才加,所以加个size()就好了,刚好等于size()-1
            }
        }
        cout<<time<<endl;
    }
    return 0;
}

 


非特殊说明,本站所有文章均为博主原创,未经许可不得转载。

https://www.prolightsfxjh.com/

Thank you!

                                                                                                                                             ------from ProLightsfx

- THE END -

ProLightsfx

11月16日09:18

最后修改:2024年11月16日
0

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

共有 0 条评论