Nowcoder9983J.加法与乘法(博弈)

链接:https://ac.nowcoder.com/acm/contest/9983/J
来源:牛客网

有一天牛牛和牛妹在做游戏,规则如下:
桌面上摆着n\mathit nn张纸牌,每张纸牌上写着一个正整数,由牛牛先手轮流执行以下操作:
1.\text 1.1.如果桌面上只剩一张纸牌,游戏结束,这张纸牌上的数字如果是奇数则牛牛胜利,反之牛妹胜利。
2.\text 2.2.当前行动玩家选择两张纸牌,设上面的数字分别为X,Y\mathit X,YX,Y,接下来玩家从加法和乘法中选择一个并应用到这两个数字上,得到结果为Z\mathit ZZ,接下来将选择的两张纸牌丢弃,并拿一张新的纸牌放到桌面上,在上面写上Z\mathit ZZ。
假设双方均以最优策略行动,最后谁会赢?

 

我的博弈是真的烂,被新生吊打

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+100;
int x,n,a[maxn],c[2];
int main () {
    scanf("%d",&n);
    for (int i=1;i<=n;i++) scanf("%d",a+i);
    for (int i=1;i<=n;i++) {
        c[a[i]%2]++;
    }
    if (n==1) {
        if (c[0])
            printf("NiuMei\n");
        else
            printf("NiuNiu\n");
        return 0;
    }
    if (c[0]==1&&c[1]==1) {
        printf("NiuNiu\n");
        return 0;
    }
    if (c[1]<=c[0]*2) {
        printf("NiuMei\n");
        return 0;
    }
    if (n%2==0)
        printf("NiuNiu\n");
    else
        printf("NiuMei\n");
}

 

posted @ 2021-02-06 12:59  zlc0405  阅读(81)  评论(0编辑  收藏  举报