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
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
如经许可后转载,请注明出处:https://prolightsfxjh.com/article/uva12100-printer-queue/
共有 0 条评论