Georgia and Bob

思路

每个棋子只能向左移动并且不能越过其左边的棋子,这就有点像是经典的nim博弈了,

但是在这里后一个石子会受到其前一个石子位置的影响,这里就需要转化一下了。

我们假设只有两个棋子,x,y,x>0,y>xx, y , x > 0, y > xx,y,x>0,y>x,显然先手可以第一步移动后面的棋子,到与第一颗棋子临近的地方,

然后无论后手如何移动棋子一,先手只要走与后手移动的步数相同,也就是保证了两者一定相邻,

这个时候假设一个结论,当所有间隔异或起来为0的时候先手必输,后手必胜,

我们再看一个例子1,3,51, 3, 51,3,5,间隔异或为000,所以先手输了,但是事实并不是啊,

先手可以操纵5走到4,然后无论后手如何操作,先手都按照他的操作copy走。

所以我么先前的假设有问题,但是似乎我们能大概得到,最后操作最后面的棋子是总能是最优的

但是最后面的棋子会受其前面的棋子的影响,因此我们从右向左给棋子两两分组,显然如果移动左侧的棋子我们可以移动右侧的棋子,

使状态保持不变,移动左侧的棋子就是他们中间的空位一直减小,当没一对棋子的空隙都为零时,显然胜负状态就已经决定了,

所以这里就成功转换为了一个nim博弈。

写min_25写废了,水一水简单博弈

代码

/*Author : lifehappy
*/
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <vector>
#include <stdlib.h>
#include <map>using namespace std;typedef long long ll;const int inf = 0x3f3f3f3f;
const double eps = 1e-6;const int N = 1e4 + 10;int a[N], n;int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int T;scanf("%d", &T);while(T--) {scanf("%d", &n);for(int i = 1; i <= n; i++) {scanf("%d", &a[i]);}sort(a + 1, a + 1 + n);int ans = 0;for(int i = n; i > 0; i -= 2) {ans ^= (a[i] - a[i - 1] - 1);}if(ans) puts("Georgia will win");else puts("Bob will win");}return 0;
}

Georgia and Bob(Poj 1704)Nim 博弈相关推荐

  1. Georgia and Bob POJ - 1704 阶梯Nim

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

  2. Georgia and Bob POJ - 1704

    Georgia and Bob 格鲁吉亚和鲍勃 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13319 Accepted: 4 ...

  3. 博弈最高位POJ 1704(Georgia and Bob-Nim博弈)

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 Georgia and Bob Time Limit: 1000MS   Memory Limit: 10000K Total Su ...

  4. POJ - 1704 Georgia and Bob

    Georgia and Bob 题意: 一个水平网格上有N个棋子 Georgia和Bob每到自己回合时可以向左移动网格上任意一个棋子任意步数 棋子与棋子之间不能重叠和相互跨越 当到对手回合时,其无法再 ...

  5. 博弈论(阶梯博弈)POJ 1704

    对阶梯博弈的阐述:博弈在一列阶梯上进行,每个阶梯上放着自然数个点.两个人进行阶梯博弈,每一步则是将一个集体上的若干个点( >=1 )移到前面去,最后没有点可以移动的人输 证明方式:如这就是一个阶 ...

  6. [SPOJ IGAME Interesting Game]Nim 博弈+数位DP

    [SPOJ IGAME Interesting Game]Nim 博弈+数位DP 分类:博弈 数位DP 1. 题目链接 [SPOJ IGAME Interesting Game] 2. 题意描述 Al ...

  7. Nim博弈和威佐夫博弈 Return of the Nim

    Nim博弈 Nim游戏的概述: 还记得这个游戏吗? 给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取.最后拿光珍珠的人输. 后来,在一份资料上看到,这种游戏称为" ...

  8. HDU 3590 PP and QQ(反nim博弈,删边游戏)

    PP and QQ 思路 删边游戏了解一下,其实就是个nim博弈吧,只是删边个数有特殊限制, 然后就是一个反nim博弈了. 删边定理: 遇到分叉口时,它的子树上的可操作的sg函数为所有子树节点的sg函 ...

  9. Be the Winner(结论:反nim博弈)

    Be the Winner 结论 记一个结论:反nim博弈,先手必胜1:尼姆和为零,所有值为1.2:尼姆和不为零,有一个大于1的数. 代码 /*Author : lifehappy */ #pragm ...

最新文章

  1. AI一分钟 | 浙大研发出“踢不倒”的四足机器人;富士康冲击A股上市,AI为最大卖点
  2. 升级BIOS解决DELL R730XD虚拟机死机问题
  3. python整数类型-Python 的数值类型(整数、长整数、浮点数和复数)
  4. 凭证 90000000 保存(帐户确定出错)
  5. C# —— 深入理解委托类型
  6. 分布式定时任务框架Elastic-Job的使用
  7. 【经验】GaussDB(for MySQL)性能优化 —— 日志的“快递驿站”
  8. 【陆勤阅读】参加kaggle数据挖掘竞赛是怎样一种体验?
  9. jenkins相关下载链接
  10. Inceptor如何访问本地文件
  11. 打印系统开发(42)——静默打印
  12. 微软vc运行库地址VC9VC11
  13. protoc ——protubuf编译后的可执行文件命令usage
  14. ffmpeg 视频音频合成新视频
  15. avr单片机c语言程序设计,avr单片机c语言编程风格介绍
  16. 从代码上看鸿蒙 APP 与安卓 APP 的关系
  17. 北都南, 神月あおい - 小悪魔lovers
  18. 帆软报表设计器常用代码知识
  19. matlab读Excel表格数据画图,matlab读Excel表格数据画图-matlab如何从excel表格中读取数据?...
  20. MySQL安装问题—— Can‘t create directory ‘C:\web\mysql-8.0.11\data\‘ (OS errno 2 - No such file or directo

热门文章

  1. php邮件发送tp,Thinkphp5 邮件发送Thinkphp发送邮件
  2. 个人空间风格模版php,ThinkPHP 模板布局
  3. mysql常用cmd指令_Mysql cmd 常用命令
  4. wireshark-win64-3.4.0安装_这9类轴承的安装方法,你可都知道?有哪些需要注意的呢?...
  5. JavaWeb应用开发实验报告下载(共12个)
  6. 史上四大“杀人”建筑,烧掉几百亿,却犯低级错误,网友:有钱人的智商,我不懂
  7. 每日一笑 | 周一,如何才能保持清醒?
  8. 美国明确警告德国,3G退网5G手机不需要换号,抽烟酗酒学生不能认定为家庭经济困难,大学食堂凭运动步数打折,这就是今天的大新闻。...
  9. matlab浮点数求绝对值_MATLAB仿真阵列天线切比雪夫综合法(附代码)
  10. php3.23,MySQL 3.23.40 又发布了-PHP教程,PHP基础