码迷,mamicode.com
首页 > 其他好文 > 详细

HDU - 6266 - HDU 6266 Hakase and Nano (博弈论)

时间:2018-09-29 22:44:24      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:++   ase   lse   print   flag   i++   head   can   eve   

题意:

有两个人从N个石子堆中拿石子,其中一个人可以拿两次,第二个人只能拿一次。最后拿完的人胜利。

思路:

类型 Hakase先 Hakase后
1 W L
1 1 W W
1 1 1 (3n) L W
1 1 1 1 (3n+1) W L
1 1 1 1 1 (3n+2) W W
类型 Hakase先 Hakase后
X 1 1 W L
X Y 1 W W
X Y Z W W
X 1 1 1 W L
X Y 1 1 W W
X Y Z 1 W W
X 1 1 1 1 W W
X Y 1 1 1 W W

1.若n = 3t,若每个石子堆都是1,A先手必输(1 1 1)。只有一个数量大于1的石子堆,则B先手A必输(X 1 1)。

2.若n = 3t+1,若只有一堆柿子大于1(X 1 1 1)。则B先手A必输。

按照结论写代码。。

代码:

#include<iostream>

using namespace std;

int main() {
    int t, n, d;
    scanf("%d", &t);
    while(t--) {
        bool flag = true;
        int cnt = 0, a;
        scanf("%d %d", &n, &d);
        for(int i = 0; i < n; i++) {
            scanf("%d", &a); 
            if(a >= 2)
                cnt++;
        }
        int x = n % 3;
        if(x == 0) {
            if(cnt==0 && d==1)
                flag = false;
            if(cnt==1 && d==2)
                flag = false;
        }else if(x == 1){
            if(cnt<=1 && d==2)
                flag = false;
        }
        if(flag) printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}

HDU - 6266 - HDU 6266 Hakase and Nano (博弈论)

标签:++   ase   lse   print   flag   i++   head   can   eve   

原文地址:https://www.cnblogs.com/somliy/p/9726858.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!