Georgia and Bob(Poj 1704)Nim 博弈
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 博弈相关推荐
- Georgia and Bob POJ - 1704 阶梯Nim
$ \color{#0066ff}{ 题目描述 }$ Georgia and Bob decide to play a self-invented game. They draw a row of g ...
- Georgia and Bob POJ - 1704
Georgia and Bob 格鲁吉亚和鲍勃 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13319 Accepted: 4 ...
- 博弈最高位POJ 1704(Georgia and Bob-Nim博弈)
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 Georgia and Bob Time Limit: 1000MS Memory Limit: 10000K Total Su ...
- POJ - 1704 Georgia and Bob
Georgia and Bob 题意: 一个水平网格上有N个棋子 Georgia和Bob每到自己回合时可以向左移动网格上任意一个棋子任意步数 棋子与棋子之间不能重叠和相互跨越 当到对手回合时,其无法再 ...
- 博弈论(阶梯博弈)POJ 1704
对阶梯博弈的阐述:博弈在一列阶梯上进行,每个阶梯上放着自然数个点.两个人进行阶梯博弈,每一步则是将一个集体上的若干个点( >=1 )移到前面去,最后没有点可以移动的人输 证明方式:如这就是一个阶 ...
- [SPOJ IGAME Interesting Game]Nim 博弈+数位DP
[SPOJ IGAME Interesting Game]Nim 博弈+数位DP 分类:博弈 数位DP 1. 题目链接 [SPOJ IGAME Interesting Game] 2. 题意描述 Al ...
- Nim博弈和威佐夫博弈 Return of the Nim
Nim博弈 Nim游戏的概述: 还记得这个游戏吗? 给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取.最后拿光珍珠的人输. 后来,在一份资料上看到,这种游戏称为" ...
- HDU 3590 PP and QQ(反nim博弈,删边游戏)
PP and QQ 思路 删边游戏了解一下,其实就是个nim博弈吧,只是删边个数有特殊限制, 然后就是一个反nim博弈了. 删边定理: 遇到分叉口时,它的子树上的可操作的sg函数为所有子树节点的sg函 ...
- Be the Winner(结论:反nim博弈)
Be the Winner 结论 记一个结论:反nim博弈,先手必胜1:尼姆和为零,所有值为1.2:尼姆和不为零,有一个大于1的数. 代码 /*Author : lifehappy */ #pragm ...
最新文章
- AI一分钟 | 浙大研发出“踢不倒”的四足机器人;富士康冲击A股上市,AI为最大卖点
- 升级BIOS解决DELL R730XD虚拟机死机问题
- python整数类型-Python 的数值类型(整数、长整数、浮点数和复数)
- 凭证 90000000 保存(帐户确定出错)
- C# —— 深入理解委托类型
- 分布式定时任务框架Elastic-Job的使用
- 【经验】GaussDB(for MySQL)性能优化 —— 日志的“快递驿站”
- 【陆勤阅读】参加kaggle数据挖掘竞赛是怎样一种体验?
- jenkins相关下载链接
- Inceptor如何访问本地文件
- 打印系统开发(42)——静默打印
- 微软vc运行库地址VC9VC11
- protoc ——protubuf编译后的可执行文件命令usage
- ffmpeg 视频音频合成新视频
- avr单片机c语言程序设计,avr单片机c语言编程风格介绍
- 从代码上看鸿蒙 APP 与安卓 APP 的关系
- 北都南, 神月あおい - 小悪魔lovers
- 帆软报表设计器常用代码知识
- matlab读Excel表格数据画图,matlab读Excel表格数据画图-matlab如何从excel表格中读取数据?...
- MySQL安装问题—— Can‘t create directory ‘C:\web\mysql-8.0.11\data\‘ (OS errno 2 - No such file or directo
热门文章
- php邮件发送tp,Thinkphp5 邮件发送Thinkphp发送邮件
- 个人空间风格模版php,ThinkPHP 模板布局
- mysql常用cmd指令_Mysql cmd 常用命令
- wireshark-win64-3.4.0安装_这9类轴承的安装方法,你可都知道?有哪些需要注意的呢?...
- JavaWeb应用开发实验报告下载(共12个)
- 史上四大“杀人”建筑,烧掉几百亿,却犯低级错误,网友:有钱人的智商,我不懂
- 每日一笑 | 周一,如何才能保持清醒?
- 美国明确警告德国,3G退网5G手机不需要换号,抽烟酗酒学生不能认定为家庭经济困难,大学食堂凭运动步数打折,这就是今天的大新闻。...
- matlab浮点数求绝对值_MATLAB仿真阵列天线切比雪夫综合法(附代码)
- php3.23,MySQL 3.23.40 又发布了-PHP教程,PHP基础