本题主要运用了queue和priority_queue方面的知识。下面是我参考的队列queue使用方法的连接:
https://www.cnblogs.com/yaoyueduzhen/p/4456430.html
通过该题,我学到了:
1.queue的使用
2.priority_queue的使用
注:
pop()清除
first()队顶元素
top()优先队列中最大的元素
push()将元素放在队列最后面
#include < iostream >
#include < cmath >
#include < cstdlib >
#include < cstring >
#include < algorithm >
#include < string >
#include < map >
#include < queue >
using namespace std;
struct node
{
int x,y;
node(int _x = 0,int _y = 0):x( _x ),y( _y ){ }
};
int main()
{
int n,v;
cin>>n;
while(n--)
{
queue<node>value;
priority_queue<int>val;
int a,b;
cin>>a>>b;
for(int i=0;i<a;i++)
{
cin>>v;
value.push(node(i,v));
val.push(v);
}
int t;
node z;
int sum=0;
for(int k=0;;k++)
{
t=val.top(); //value最大值
z=value.front(); //当前对应x,y
value.pop(); //清除
if(t==z.y)
{
val.pop();
sum++;
if(z.x==b)
{
cout<<sum<<endl;
break;
}
}
else
value.push(z);
}
}
return 0;
}