所有不用链表直接用 while 找左右两边第一个没有出列的人的题解都是错的,最坏时间复杂度是 O(n2),每次出列的人相邻即可卡掉。
数据生成器:
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen("P1878.in" , "w" , stdout);
int n = 2e5;
printf("%d\n" , n);
for(int i = 1 ; i <= n ; i++)
putchar((i & 1 ? 'B' : 'G'));
puts("");
for(int i = 1 ; i <= n ; i++)
printf("%d " , (i & 1 ? 0 : i / 2));
return 0;
}
被叉的题解:
@louis_ll
@water_mi
@Kalium
@miao5
@hanzhang666
@amhxyp
@chager
@Merci
@巧若拙
@荣一鸣
@moye到碗里来
@日语酱