题面:
思路:
每一堆糖排成一列,所有列横着放,形成一个阶梯型
两个决策相当于左边一列去掉和最下面一行去掉
那么这个模型可以转化为同样形状的网格图,向左上方走,走到边界的赢·
然后一波数学推导带走
Code:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,ans,a[];
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
sort(a+,a+n+);
reverse(a+,a+n+);
for(int i=;i<=n;i++){
if(i+>a[i+]){
for(int j=i+;a[j]==i;j++) ans^=;
ans|=(a[i]-i)&;
puts(ans? "First":"Second");
return ;
}
}
}