12100—Printer Queue

来源:互联网 发布:强制竖屏软件 编辑:程序博客网 时间:2024/05/17 02:28

代码:

#include<iostream>

#include<vector>

using namespacestd;

 

int main()

{

    int test;

    cin>>test;

    while(test--)

    {

        vector<int> q;

        int n,m;

        cin>>n>>m;

        while(n--)

        {

            int x;

            cin>>x;

            q.push_back(x);

        }

        int time=0;

        while(true)

        {

            int i;

            for(i=1;i<q.size();i++)

            {

                if(q[i]>q[0])

                {

                    q.push_back(q[0]);

                    q.erase(q.begin());

                    if(m!=0)

                    {

                        m--;

                    }

                    else

                    {

                        m=q.size()-1;

                    }

                    i=0;

                }

            }

            if(i==q.size())

            {

                q.erase(q.begin());

                time++;

                if(m==0)

                {

                   cout<<time<<endl;

                    break;

                }

                else

                {

                    m--;

                }

            }

        }

    }

    return 0;

}

解析:

用vector模拟队列的操作,最关键的就是每一次操作后都要更新并记录目标任务的索引位置。

步骤:

1.       将数据读入到队列中

2.       使队列的开头是最大的元素并同时更新目标任务的索引

3.       删除队列开头元素,并判断开头的是否是目标任务。

0 0
原创粉丝点击