bzoj 1982: [Spoj 2021]Moving Pebbles【博弈論】
阿新 • • 發佈:2018-12-03
必敗狀態是n為偶數並且數量相同的石子堆可以兩兩配對,因為這樣後手可以模仿先手操作
其他狀態一定可以由先手給後手一步拼出一個必敗狀態(用最大堆補)
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=100005; int n,a[N],ok=1; int read() { int r=0,f=1; char p=getchar(); while(p>'9'||p<'0') { if(p=='-') f=-1; p=getchar(); } while(p>='0'&&p<='9') { r=r*10+p-48; p=getchar(); } return r*f; } int main() { n=read(); for(int i=1;i<=n;i++) a[i]=read(); sort(a+1,a+1+n); for(int i=1;i<n;i+=2) if(a[i]!=a[i+1]) { ok=0; break; } if(ok&&!(n&1)) puts("second player"); else puts("first player"); return 0; }