题目Musical Chairs
一个约瑟夫环变种问题。
用队列
约瑟夫环问题我一直都用队列求解的,但菜鸡的我今天上午并没有很好的利用队列的特点导致TLE
代码如下
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
const int inf=0x3f3f3f3f;
typedef long long ll;
queue<int>q;
int a[maxn];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
q.push(i);
}
while(q.size()!=1)
{
int t=q.front();
int k=a[t];
if(k%q.size()==0)
k=q.size();
else
k%=q.size();
while(--k)
{
q.push(q.front());
q.pop();
}
q.pop();
}
cout<<q.front();
}