题解:B4227 [常州市赛 2024] 游戏
题意
现在有一个长度为
思路
我们发现由于
我们先猜个结论,如果序列在长度不为二时为回文串,那么 Bob 存在一种策略使得这个序列被删到两个数时还是回文串。由于序列长度此时为偶数,这个序列中所有的数字的个数均为偶数。因此我们接下来每次操作只需要 Bob 删 Alice 上一次删除的数,就能保证剩下的两个数相等。
得到这个结论后,我们的问题变成了有没有一种删数方案使得剩下的两个数相等。我们发现,只要有一种数字的出现个数大于等于
代码
#include<bits/stdc++.h>
#define N 100000 + 39
using namespace std;
int n, t, sum;
bool vis[N];
int main()
{
ios :: sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> t;
while(t --)
{
cin >> n;
sum = 0;
for(int i = 1; i < 100000 + 39; i ++)
{
vis[i] = 0;
}
for(int i = 1; i <= 2 * n; i ++)
{
int x;
cin >> x;
sum += !vis[x];
vis[x] = 1;
}
if(sum >= n + 1)
{
cout << "Win\n";
}
else
{
cout << "Lose\n";
}
}
return 0;
}
AC 记录。