Forethought Future Cup - Final Round (Onsite Finalists Only)
C.Thanos Nim
=
先说结论:
如果石子最小堆数量不超过 时,先手必胜,反之后手必胜
如果石子最小堆数量超过了 ,
那么先手无论怎么选,
一定会选到一些最小堆,
这就会使得最小堆的数量减少
然后后手不妨将其余的非最小堆的一部分变成最小堆,
但是当最小堆数量变为 ,
而剩余堆超过 时,
再操作一次即可获胜,
经过观察可知最后胜利者一定是后手
那么我们就得到了结论:
如果石子最小堆数量不超过 时,先手必胜,反之后手必胜
代码就不难写出了
#include<bits/stdc++.h>
#define BetterIO ios::sync_with_stdio(false)
using namespace std;
int N,A[1001];
int main(void)
{
BetterIO;
#ifndef ONLINE_JUDGE
freopen("IN.in","r",stdin);
#endif
register int i;cin>>N;
for(i=1;i<=N;i++)cin>>A[i];
sort(A+1,A+N+1);
if(A[1]!=A[N/2+1])puts("Alice");
else puts("Bob");
return 0;
}