原题链接
本人直接使用了约瑟夫问题的思路解这题,用数组模拟链表:
#include<iostream>
using namespace std;
int p[70000];
bool f[70000];
int n,m;
int main(){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<2*n;i++)p[i]=i+1;
p[2*n]=1;
int now=1;
for(int i=1;i<=n;i++){
for(int j=1;j<m;j++)
now=p[now];
f[now]=1;
p[now]=p[p[now]];
}
for(int i=1;i<=2*n;i++){
cout<<(f[i]?'B':'G');
if((i%50)==0)cout<<'\n';
}
return 0;
}
复杂度O(nm),因为 n,m<=32767 TLE了。
1.求思路
2.但是为什么这篇的就跑得很快?erase不是O(n)的复杂度吗?
谢谢!