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