ARC#105D 题解
ARC#105D
给定
- 如果还有石子堆不在盘子上,选择任意一堆石子放在任意一个盘子上。
- 否则,从一个盘子上取走若干(但不能是 0)个石子。
问:先手是否有必胜策略。
解法
容易观察到应该对
若
若
#include<bits/stdc++.h>
#define f(i,x,y) for(int i=x, i##end=y; i<=i##end; ++i)
#define d(i,x,y) for(int i=y, i##end=x; i>=i##end; --i)
#define uf(i,x,y) for(int i=x, i##end=y; i<i##end; ++i)
#define ll long long
#define pir pair<int, int>
#define fir first
#define sec second
#define mp make_pair
#define pb push_back
char ch;
int rd() {
int f=1, x=0; ch=getchar();
while(!isdigit(ch)) { f=((ch=='-')?-1:f); ch=getchar(); }
while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar(); }
return x*f;
}
void rd(int& x) { x=rd(); }
using namespace std;
#define _ 1000005
int T, n, a[_];
void solve() {
map<int, int> M;
rd(n); f(i,1,n) rd(a[i]), ++M[a[i]];
int ok=1; f(i,1,n) ok&=(!(M[a[i]]&1));
if(n&1) { puts("Second"); }
else { puts(ok ? "Second" : "First"); }
}
int main() {
rd(T); while(T--) solve();
return 0;
}