5435: 取石子

Time Limit: 10 Sec  Memory Limit: 512 MB
Submit: 35  Solved: 10
[Submit][Status][Discuss]

Description

有 n 堆石子排成一行,第 i 堆石子的个数为 xi。
Alice 和 Bob 轮流取石子,每人每次从两端的石子中选择一堆取走,Alice 先手。
我们知道在传统的取石子游戏中,sg 函数的值为每堆石子个数的异或和。
Alice 和 Bob 都希望自己取到的石子的异或和比对方大。你需要求出谁能获胜。
有多组数据。

Input

第一行一个正整数 t 表示数据组数。每组数据第一行一个正整数 n。第二行 n 个整数 x1~xn。
【数据范围】
Subtask 1 (5pts):n<=15。
Subtask 2 (11pts):n<=100,xi<=50。
Subtask 3 (17pts):n<=500。
Subtask 4 (67pts):无特殊限制。
对于全部数据,1<=t<=100,1<=n<=10000,1<=xi<=10^9。

Output

每组数据一行一个字符串表示答案,平局输出 Draw。

Sample Input

3
2
3 3
2
3 5
3
4 4 4

Sample Output

Draw
Alice
Bob

思路:设ans=所有数异或和。  如果ans=0,那么无论A取到任何数x,B的数也是x,即是平局。

那么我们考虑ans!=0,那么ans的最高位为i,有(1<<i)一定是奇数个1,结果取决于这一位,我们按照a[]是否有(1<<i),把所有数换位0或者1。

然后现在题目变为了01串,有奇数个1,问轮流从两端取,问先手是否能取到奇数个1。

然后?

BZOJ5435: 取石子(博弈)(占位)的更多相关文章

  1. Cogs 56. 质数取石子(博弈)

    质数取石子 ★★ 输入文件:stonegame.in 输出文件:stonegame.out 简单对比 时间限制:1 s 内存限制:128 MB 问题描述 DD 和 MM 正在玩取石子游戏.他们的游戏规 ...

  2. {HDU}{2516}{取石子游戏}{斐波那契博弈}

    题意:给定一堆石子,每个人最多取前一个人取石子数的2被,最少取一个,最后取石子的为赢家,求赢家. 思路:斐波那契博弈,这个题的证明过程太精彩了! 一个重要的定理:任何正整数都可以表示为若干个不连续的斐 ...

  3. nim3取石子游戏 (威佐夫博弈)

    http://www.cnblogs.com/jackge/archive/2013/04/22/3034968.html 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有 ...

  4. HDU 2516 取石子游戏(斐波那契博弈)

    取石子游戏 Time Limit: 2000/1000 MS(Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...

  5. 【POJ1067】取石子游戏 (威佐夫博弈)

    [题目] Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的 ...

  6. HDU 2516 取石子游戏 斐波纳契博弈

    斐波纳契博弈: 有一堆个数为n的石子,游戏双方轮流取石子,满足: 1)先手不能在第一次把所有的石子取完: 2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍) ...

  7. HDU 1527 取石子游戏(威佐夫博弈)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  8. HDU 1527 取石子游戏 (威佐夫博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1527 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是 ...

  9. 取石子游戏(hdu1527 博弈)

    取石子游戏 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

随机推荐

  1. codeforces 848c - two TVs

    2017-08-22 15:42:44 writer:pprp 参考:http://blog.csdn.net/qq_37497322/article/details/77463376#comment ...

  2. has~和belongsTo的区别?

    在某一个class里面,class_name所对应的表为主表(父), 关系函数方法里面的第一个参数所对应的表为从属表(子), 即为与主表相关联的表. $has~ 1.外键保存在关联表中:  2.保存时 ...

  3. Python基础笔记系列十四:python无缝调用c程序

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! python语言可以对c程序代码进行调用,以弥补python语言低性能的缺 ...

  4. Android自定义圆形ProgressBar

    闲来无事做了一个自定义的进度条,大致效果图如下: progressbar.gif 废话不多说,下面直接上代码: 自定义控件代码CircleProgressBar.java: public class ...

  5. EPANET中的typedef使用

    struct  Floatlist  /* Element of list of floats */{   double  value;   struct  Floatlist *next;};typ ...

  6. LeetCode OJ:Jump Game II(跳跃游戏2)

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  7. 【javascript基础】JS计算字符串所占字节数

    废话不说,直接正题吧. 最近项目有个需求要用js计算一串字符串写入到localStorage里所占的内存,众所周知的,js是使用Unicode编码的.而Unicode的实现有N种,其中用的最多的就是U ...

  8. yii2 实现excel导出功能

    官方教程地址:http://www.yiiframework.com/extension/yii2-export2excel/ 安装: Either run php composer.phar req ...

  9. 【LeetCode 67_字符串_算术运算】Add Binary

    string addBinary(string a, string b) { int alen = a.size(); int blen = b.size(); ) return b; ) retur ...

  10. win10 downloader.exe 修复方法

    由于系统更新是和系统密切相关的,在日常使用中某些系统文件如果出现损坏,同样会导致系统更新无法成功安装.如果在使用Windows 10时可以成功下载更新,但是安装的时候出错,此时就需要对系统文件进行检查 ...