HDU 4388(博弈)

6人阅读 评论(0) 收藏 举报
分类:

思路:假设任取一堆石子,个数为n。每次操作就是把n变为k和k XOR n(0<k<n)这两堆。我们发现当n=2^i时,就不能再分了。因为n异或上一个小于n的数肯定大于n。那么最后n可以分成t堆,并且这t堆的个数都满足tn = 2^i,tn的二进制中1的个数为1,那么t就等于n的二进制中1的个数。现在考虑把(k XOR n)换为(2*k XOR n),二进制中1的个数奇偶性不变。所以我们就可以统计出n中二进制1的个数为cnt,对于一堆答案就是看(cnt-1)的奇偶性。

    统计出所有的cnt-1记为tot,如果tot为奇数则先手赢,否则后手赢。

#include<cstdio>
using namespace std;
int sg[1010], vis[1010];
int f[20];
int cal(int x){
    int cnt = 0;
    while(x){
        cnt += x & 1;
        x >>= 1;
    }
    return cnt-1;
}
int main(){


    int T, kase = 0;
    scanf("%d", &T);
    while(T--){
        int n;
        scanf("%d", &n);
        int ans = 0;
        for(int i = 0; i < n; ++i){
            int x;
            scanf("%d", &x);
            ans += cal(x);
        }
        printf("Case %d: ", ++kase);
        if(ans & 1) printf("Yes\n");
        else printf("No\n");
    }
}

查看评论

HDU 4388 Stone Game II(博弈)

http://acm.split.hdu.edu.cn/showproblem.php?pid=4388 找规律: 如果所有石头数的二进制中1的总个数是奇数且n为偶数 胜 如果所有石头数的二进制...
  • tomorrowtodie
  • tomorrowtodie
  • 2016-09-01 15:16:03
  • 465

HDU 4388 Stone Game II 博弈,规律题

题目链接:这里 题意:最初有n堆石子,每堆石子个数已知。两人轮流执行操作,如果当某人无法执行有效操作时即输。操作分两步: 第一步为:选择其中一堆石子假定石子个数为a,拿走个数不为0的一些石子使得该堆...
  • just_sort
  • just_sort
  • 2017-03-11 17:21:25
  • 564

博弈_______Stone Game II(hdu 4388 2012多校第九场)

Problem Description   Stone Game II comes. It needs two players to play this game. There are some...
  • y1196645376
  • y1196645376
  • 2016-08-07 18:24:51
  • 777

HDU - 4388 博弈 + 找规律

题意: 给出n堆物品,每堆物品都有若干件,现在A和B进行游戏,每人每轮操作一次,按照如下规则: 1. 任意选择一个堆,假设该堆有x个物品,从中选择k个,要保证0 2. 再增加一个大小为x^k的堆...
  • Bahuia
  • Bahuia
  • 2017-03-17 16:20:31
  • 398

HDU 5897 (博弈 模拟 bfs)

题目链接:点击这里题意:Alice有一个帅,Bob有一个将和一个马,Alice要尽可能拖延时间,Bob要尽快获胜,问Bob获胜双方走的步数。如果Alice获胜输出“Luck guy!”。平局视为Ali...
  • morejarphone
  • morejarphone
  • 2016-09-19 20:25:08
  • 708

hdu 1536、hdu 1944 S-Nim(博弈SG函数)

题意:多组测试数据 ,输入 k个集合S的元素,m种情况,m种(L堆,每堆hi个)。             若存在移动某堆能到达一个必败点,则该点为必胜点,输出W             必败点指...
  • LiWen_7
  • LiWen_7
  • 2012-09-04 18:19:56
  • 3381

Hdu 6032 关于字符串的博弈

就是比较正常的博弈,因为数据量很小,写得很暴力也能过,map和set套一下还是很方便的。#include using namespace std; const int INF=1e9; char s...
  • MrBird_to_fly
  • MrBird_to_fly
  • 2017-06-25 18:55:21
  • 314

组合博弈入门

  • 2012年07月23日 09:28
  • 150KB
  • 下载

HDU2147 巴什博弈

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2147   题目大意:就是有一个游戏,在一个n*m的矩阵中起始位置是(1,m),走到终止位置(n,1...
  • No_Retreats
  • No_Retreats
  • 2012-08-23 16:49:16
  • 2718

HDU3389(阶梯博弈)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3389 题意:1-N带编号的盒子,当编号满足A>B && A非空 && (A + B) % 3 == 0...
  • ACdreamers
  • ACdreamers
  • 2013-11-29 18:38:13
  • 2634
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 703
    排名: 7万+
    最新评论