• BZOJ5435: 取石子(博弈)(占位)


    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。

    然后?

  • 相关阅读:
    iOS深入学习(Block全面分析)
    iOS 多快好省的宏定义
    1.ARC和非ARC文件共存
    简单的实现UIpicker上面的取消确定按钮
    ios 简单的倒计时验证码数秒过程实现
    jquerymobile 基础教程
    得到UIView中某个非子视图在UIView中的位置
    状态栏问题
    html表格,列表
    html简单样式
  • 原文地址:https://www.cnblogs.com/hua-dong/p/9961714.html
Copyright © 2020-2023  润新知