题目链接在这里:I-Northcott Game_牛客竞赛博弈专题班组合游戏基本概念、对抗搜索、Bash游戏、Nim游戏习题 (nowcoder.com)

这题是一个伪装的很好的取石子问题,可以发现,一个棋子往边上移动是没有用的,因为这一行另一个棋子可以朝同一方向移动相同数的格子,可以发现,如果所有的棋子都相邻了,这种情况下的先手一定是必败态。所以胜负与同一行棋子之间间隔的个数有关,于是就可以发现这是一个最经典的取石子问题了。

把每一行抽象成一堆石子,石子的个数为两个棋子之间的间隔空格数(这里注意是两者列的差的绝对值要再减一个1),然后异或和一下就行了。

 1 #include "bits/stdc++.h"
2 using namespace std;
3 const int MAX=1005;
4 int n,m,a[MAX];
5 int main(){
6 int i,j,x,y,an=0;
7 scanf("%d%d",&n,&m);
8 for (i=1;i<=n;i++){
9 scanf("%d%d",&x,&y);
10 a[i]=abs(x-y)-1;
11 an^=a[i];
12 }
13 if (an!=0) cout<<"I WIN!";
14 else cout<<"BAD LUCK!";
15 return 0;
16 }

博弈论练习8 Northcott Game(取石子问题)的更多相关文章

  1. 【BZOJ1413】[ZJOI2009]取石子游戏(博弈论,动态规划)

    [BZOJ1413][ZJOI2009]取石子游戏(博弈论,动态规划) 题面 BZOJ 洛谷 题解 神仙题.jpg.\(ZJOI\)是真的神仙. 发现\(SG\)函数等东西完全找不到规律,无奈只能翻题 ...

  2. POJ.1067 取石子游戏 (博弈论 威佐夫博弈)

    POJ.1067 取石子游戏 (博弈论 威佐夫博弈) 题意分析 简单的威佐夫博弈 博弈论快速入门 代码总览 #include <cstdio> #include <cmath> ...

  3. HDU.2516 取石子游戏 (博弈论 斐波那契博弈)

    HDU.2516 取石子游戏 (博弈论 斐波那契博弈) 题意分析 简单的斐波那契博弈 博弈论快速入门 代码总览 #include <bits/stdc++.h> #define nmax ...

  4. bzoj3895: 取石子(博弈论,记忆化搜索)

    3895: 取石子 Time Limit: 1 Sec  Memory Limit: 512 MBSubmit: 361  Solved: 177[Submit][Status][Discuss] D ...

  5. 取石子游戏 HDU 1527 博弈论 威佐夫博弈

    取石子游戏 HDU 1527 博弈论 威佐夫博弈 题意 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两 ...

  6. HDU 2516 取石子游戏 (博弈论)

    取石子游戏 Problem Description 1堆石子有n个,两人轮流取.先取者第1次能够取随意多个,但不能所有取完.以后每次取的石子数不能超过上次取子数的2倍.取完者胜.先取者负输出" ...

  7. 【POJ】1067 取石子游戏(博弈论)

    Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...

  8. 【XSY2988】取石子 博弈论

    题目描述 有 \(n\) 堆石子,每堆石子的个数是 \(c_i\). Alice 和 Bob 轮流取石子(先后手未定),Alice 每次从一堆中取 \(a\) 个,Bob每次从一堆中取 \(b\) 个 ...

  9. 【洛谷2252&HDU1527】取石子游戏(博弈论)

    题面 HDU1527 取石子游戏 洛谷2252 取石子游戏 题解 裸的威佐夫博弈 #include<iostream> #include<cmath> using namesp ...

  10. POJ1067 取石子游戏 威佐夫博弈 博弈论

    http://poj.org/problem?id=1067 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可 ...

随机推荐

  1. c语言学习---gets()读取字符串,以及\0,fgets()put()fputs()

    #include<stdio.h> //gets()读取字符串, 可以读取空格 int main() { char num[2] = "";//gets 也会造成内存污 ...

  2. RabbitMQ学习第七章:消息确认机制之事务机制

    RabbitMQ消息确认机制之事务机制. RabbitMQ中,我们可以通过持久化数据 解决RabbitMQ服务器异常 的数据丢失问题. 问题:生产者将消息发送出去,消息到底有没有到达RabbitMQ服 ...

  3. 1326. 灌溉花园的最少水龙头数目 (Hard)

    问题描述 1326. 灌溉花园的最少水龙头数目 (Hard) 在 x 轴上有一个一维的花园.花园长度为 n,从点 0 开始,到点 n 结束. 花园里总共有 n + 1 个水龙头,分别位于 [0, 1, ...

  4. visual studio 2015 IOS开发连接mac时提示错误couldn't connect to xxxx, please try again的一个方法

    本人使用虚拟机MAC.原本使用虚拟机中的VS2015连接正常没有问题. 但是当把MAC的虚拟机文件COPY到另一个机器上,提示"couldn't connect to xxxx,  plea ...

  5. [BOM]打包代码前,快速去除前端日志

    一般开发时使用console.log() 方法.于是可以在js文件的最开头加上: console.log = function(){}

  6. 请求/响应拦截器 给请求添加token认证

  7. docker打包java

    java1.8镜像 localtime文件为/etc/localtime 将本地此文件打包到docker镜像中 FROM openjdk:8-jdk-alpine MAINTAINER geyanan ...

  8. Telerik——GridView总结(Winform)

    在使用Telerik控件时有很多的方法,属性经常被用到,分享在此总结也便于查看复习. 1.基本属性 GridViewTextBoxColumn col = new GridViewTextBoxCol ...

  9. 攻防世界Web进阶篇——warmup

    打开链接,发现是一张滑稽 查看页面源代码,发现文件 于是打开source.php,发现 打开hint.php,根据提示得知flag在ffffllllaaaagggg文件中 回到source.php,检 ...

  10. 我眼中的Serverless

    https://cloud.tencent.com/document/product/583 摆脱服务器.存储等底层设备,只上传代码,由云服务器提供服务的触发,维护,调用.