CF1147C Thanos Nim(博弈论、结论推导)
题意:
给出一堆石头,轮流操作,每次必须选择n/2堆石头,从中选取正数数量的石头移除。不同堆的移除数量可以不同。
当当前堆的数量小于n/2时,失败。询问获胜者。
题解:
#include<bits/stdc++.h> using namespace std; const int maxn=1010; int a[maxn]; int n; int main () { scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",a+i); int Min=1e9; for (int i=1;i<=n;i++) Min=min(Min,a[i]); int sum=0; for (int i=1;i<=n;i++) if (a[i]==Min) sum++; if (sum<=n/2) printf("Alice\n"); else printf("Bob\n"); }