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");
}  

 

posted @ 2020-09-15 13:50  zlc0405  阅读(127)  评论(0编辑  收藏  举报