P10507 Georgia and Bob

这篇题解的注重点不是结论的证明,而是发现结论的思路,所以比较偏感性。证明人人都会,而发现结论的思路才是这题真正值得思考的地方。

感觉这道题不知道阶梯 NIM 自己推出来也不难,在这个建模下思路挺顺的。感觉讲解阶梯 NIM 可以采用这个模型。

显然的博弈论题目,但是局面不好表示,这种情况经典的转化是寻找一个可以刻画局面的特殊量。

考虑到每一次移动棋子只与它与它的前驱之间的距离有关,因此不难想到本题刻画局面的特殊量与相邻元素的差分有关。于是,我们在差分数组上进行分析。

我们又想到,如果先手某一次移动了某一个棋子,那么后手一定可以把这个棋子的后继棋子移动相同的距离。而这个时候,除了这个棋子与这个棋子的后继棋子的后继棋子的差分,其余的差分值是都没有改变的。不考虑这两个棋子的改变,这种操作就是无意义的,因为它什么都没有改变。而且这种情况下后手一定可以这么操作,因为不劣。我们希望构造一个特征量这种操作无意义,因为可以简化局面。

我们再来考虑改变的两个棋子有什么性质。我们发现这两个棋子的排名奇偶性相同,这引导我们思考把棋子按照排名奇偶性分类。再结合希望可以使这种操作无意义,我们希望能构造出一种刻画局面的方式使排名为奇数或者偶数的棋子的差分在某一次操作中的改变可以被忽略。

注意到希望可以被忽略改变的棋子正好也是被先手操作的棋子,而先手又不会操作这些棋子,因为这种操作是无意义的,不优。那我们为什么不直接在局面中删去奇数或偶数棋子中一个的差分呢?

由于最后一个棋子的影响不能忽略,那我们选取从后往前排名为偶数的棋子的差分忽略。这样,每一次操作只能对奇数棋子操作。如果对偶数棋子操作,后手可以立刻对后继棋子进行相同的操作。由于这个棋子与这个棋子的后继棋子的后继棋子都是偶数,它们差分的改变刚好可以被忽略。于是,我们只使用奇数棋子的差分刻画了状态。

最后,再来考虑奇数棋子怎么拿。我们发现在它的差分减一范围内可以随便取多少,因为不会超过上一个偶数棋子。因此,奇数棋子就相当于 NIM 游戏里的一堆石子,这一堆里共有它的差分减一个石子。至此,我们成功将问题转化为了经典的 NIM 博弈问题。

想看理性证明的可以去看别的题解,写的绝对比我这个胡说八道的感性理解好。

#include <bits/stdc++.h>
using namespace std;
long long t,n,a[10000];
int main()
{
scanf("%lld",&t);
while(t--)
{
scanf("%lld",&n);
for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
sort(a+1,a+n+1);
long long sum=0;
for(int i=n;i>=1;i-=2)sum^=(a[i]-a[i-1]-1);
if(sum)printf("Georgia will win\n");
else printf("Bob will win\n");
}
return 0;
}

Luogu P10507 Georgia and Bob 题解的更多相关文章

  1. POJ1704 Georgia and Bob 题解

    阶梯博弈的变形.不知道的话还是一道挺神的题. 将所有的棋子两两绑在一起,对于奇数个棋子的情况,将其与起点看作一组.于是便可以将一组棋子的中间格子数看作一推石子.对靠右棋子的操作是取石子,而对左棋子的操 ...

  2. 【POJ1704】Georgia and Bob(博弈论)

    [POJ1704]Georgia and Bob(博弈论) 题面 POJ Vjudge 题解 这种一列格子中移动棋子的问题一般可以看做成一个阶梯博弈. 将一个棋子向左移动时,它和前面棋子的距离变小,和 ...

  3. [POJ1704]Georgia and Bob 博弈论

    从这开始我们来进入做题环节!作为一个较为抽象的知识点,博弈论一定要结合题目才更显魅力.今天,我主要介绍一些经典的题目,重点是去理解模型的转化,sg函数的推理和证明.话不多说,现在开始! Georgia ...

  4. Georgia and Bob POJ - 1704 阶梯Nim

    $ \color{#0066ff}{ 题目描述 }$ Georgia and Bob decide to play a self-invented game. They draw a row of g ...

  5. 【poj 1704】Georgia and Bob

    Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9776 Accepted: 3222 Description Georgia a ...

  6. POJ1704 Georgia and Bob(Nim博弈变形)

    Georgia and Bob Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14312   Accepted: 4840 ...

  7. Georgia and Bob(POJ 1704)

    原题如下: Georgia and Bob Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12712   Accepted: ...

  8. hdu 4315 Climbing the Hill && poj 1704 Georgia and Bob阶梯博弈--尼姆博弈

    参考博客 先讲一下Georgia and Bob: 题意: 给你一排球的位置(全部在x轴上操作),你要把他们都移动到0位置,每次至少走一步且不能超过他前面(下标小)的那个球,谁不能操作谁就输了 题解: ...

  9. POJ1704 Georgia and Bob

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9771   Accepted: 3220 Description Georg ...

  10. POJ1704 Georgia and Bob (阶梯博弈)

    Georgia and Bob Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Subm ...

随机推荐

  1. CSP - J理论(1)

    CSP-J理论(1) CSP-J理论合集跳转 目录 本目录中所有标题单击均可以快速跳转哦 一.排列组合与概率 $\ \ \ \ \ $1.排列 $\ \ \ \ \ $2.组合 $\ \ \ \ \ ...

  2. 878. 第 N 个神奇数字

    878. 第 N 个神奇数字 题解:二分 + gcd 1~n中,能被a整除的个数 n/a , 能被b整除的个数 n/b, 能被a 且 b 整除的个数 n/ gcd(a,b) 则 1~n中能被a或b整除 ...

  3. 文件导出ZIP压缩

    文件导出ZIP压缩 @Override public String downloadallfiles(HttpServletRequest request, String lsbpId, String ...

  4. pandas 将excle两行或多行文本合并为一行

    原有excle 目的: # j加载另一份数据源 import pandas as pd import xlrd import time from xlutils.copy import copy fr ...

  5. python3安装xlutils模块

    下载: https://www.cnpython.com/pypi/xlutils/dl-xlutils-2.0.0-py2.py3-none-any.whl#google_vignette 安装: ...

  6. 【记录】手机QQ和电脑QQ里的emoji种类有什么差异?

    版本 手机 QQ:V 8.9.76.12115 电脑 QQ:QQ9.7.15(29157) 偶然发现,有一种emoji手机上怎么找都找不到,一开始以为自己失忆了,后来发现这种emoji只在电脑上有. ...

  7. Linux内核中断irq.h头文件找不到的问题

    头文件 在vscode中,进行tasklet和work中断实验的时候,对于包含的头文件如下两个一直爆红: #include <linux/irq.h> #include <linux ...

  8. 堆叠、MLAG、VPC、VSS 技术对比及架构建议

    堆叠.MLAG.VPC.VSS 技术对比及架构建议 1. 堆叠(Stacking) 技术实现: 多台物理设备通过专用堆叠线缆(如华为的Stack.华三IRF.思科StackWise)或普通光纤/以太网 ...

  9. 队列-Python 实现

    用 Python 来实现 队列和双端队列, 直接上代码理解即可. 队列蛮好理解的, 就是模拟咱生活中的排队. 先进, 先出嘛. """ 队列 - ADT 队列 Queue ...

  10. Flutter开发的高效图片压缩工具:让APP更加丝滑

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...