Luogu 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 题解的更多相关文章
- POJ1704 Georgia and Bob 题解
阶梯博弈的变形.不知道的话还是一道挺神的题. 将所有的棋子两两绑在一起,对于奇数个棋子的情况,将其与起点看作一组.于是便可以将一组棋子的中间格子数看作一推石子.对靠右棋子的操作是取石子,而对左棋子的操 ...
- 【POJ1704】Georgia and Bob(博弈论)
[POJ1704]Georgia and Bob(博弈论) 题面 POJ Vjudge 题解 这种一列格子中移动棋子的问题一般可以看做成一个阶梯博弈. 将一个棋子向左移动时,它和前面棋子的距离变小,和 ...
- [POJ1704]Georgia and Bob 博弈论
从这开始我们来进入做题环节!作为一个较为抽象的知识点,博弈论一定要结合题目才更显魅力.今天,我主要介绍一些经典的题目,重点是去理解模型的转化,sg函数的推理和证明.话不多说,现在开始! Georgia ...
- Georgia and Bob POJ - 1704 阶梯Nim
$ \color{#0066ff}{ 题目描述 }$ Georgia and Bob decide to play a self-invented game. They draw a row of g ...
- 【poj 1704】Georgia and Bob
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9776 Accepted: 3222 Description Georgia a ...
- POJ1704 Georgia and Bob(Nim博弈变形)
Georgia and Bob Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14312 Accepted: 4840 ...
- Georgia and Bob(POJ 1704)
原题如下: Georgia and Bob Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12712 Accepted: ...
- hdu 4315 Climbing the Hill && poj 1704 Georgia and Bob阶梯博弈--尼姆博弈
参考博客 先讲一下Georgia and Bob: 题意: 给你一排球的位置(全部在x轴上操作),你要把他们都移动到0位置,每次至少走一步且不能超过他前面(下标小)的那个球,谁不能操作谁就输了 题解: ...
- POJ1704 Georgia and Bob
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9771 Accepted: 3220 Description Georg ...
- POJ1704 Georgia and Bob (阶梯博弈)
Georgia and Bob Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64u Subm ...
随机推荐
- PHP传递参数(跨文件)的8种常见方法
以下是 PHP 中跨文件传递参数的 8 种常见方法,按场景和安全性分类整理,附详细说明和示例代码: 一.超全局变量(适合请求间数据共享) 1. $_GET / $_POST 用途:通过 URL 或表单 ...
- MySQL 中使用索引一定有效吗?如何排查索引效果?
MySQL 中使用索引一定有效吗?如何排查索引效果? 虽然索引是提升 MySQL 查询性能的常见手段,但并不是所有情况下索引都会有效.索引的使用取决于查询条件.数据分布.索引设计等多个因素.如果索引未 ...
- thinkphphp 计算分页 和分页总数 和sql计算分页 php
利用page计算分页 $p=input('p')?input('p'):1; $limit=6; $res=db('points_log')->where(['p_uid'=>$uid,' ...
- 【HUST】网络攻防实践|6_物联网设备固件安全实验|flag2~5速通指南
写在最前:最近没空写报告,实验原理虽然已经摸清了但是没空写.flag2到4是一些大胆的想法的通关方式,flag5是正经通关的.之后写报告的时候会补发正经的实验原理,和flag2到4正常的通关方式. 记 ...
- vue3 基础-API-watch 和 watchEffect
前篇对 computed 属性如何在 api 中基本使用, 即从 vue 中引入, 然后通过直接传函数或者传对象的方式, 开箱即用, 非常清晰易懂. 本篇继续来对之前的 watch 进行扩展使用啦. ...
- 实现低PE策略的回测
回测的基本流程 首先需要声明下,此回测属于日间回测,即当天收盘后对交易信号进行检测,得到买入或卖出检测结果,然后由第二天开盘后根据前一天的检测结果完成交易. 其次要对账户进行除权除息处理.因为除权除息 ...
- 开启PyTorch的第一天
为积极响应导师的要求,我开启了我的深度学习之旅,成为炼丹大队的一员. 今天先是安装PyTorch,路子大家网上已经摸的很清了,我主要参考的是 https://blog.csdn.net/weixin_ ...
- SignalR服务端嵌入到WPF
用的是.net framework 4.7.2的WPF. <Window x:Class="EBServerTry.MainWindow" xmlns="http: ...
- 用户空间的系统调用是如何链接到内核空间的系统调用的——MIT6.S081学习记录
用户态的sysinfo(),首先系统会从user/user.h里找到声明,随后由链接到 usys.S 中的汇编代码来实现的.usys.S是通过usys.pl生成的.usys.S 文件定义了所有系统调用 ...
- mysql 添加外键约束
添加外键 alter table table_name add foreign key fk_product_id (product_id) references product(id) tabl ...