SG函数博弈——poj2311
关于SG函数的博弈
首先定义必败态
x : SG[x]=0
设任意一个状态y,到所有y能到达的状态连一条边,令这些后继为z
y : SG[y]=mex(SG[z])
SG[y]==0 : y就是必败态
SG[y]!=0 : y就是必胜态
所以博弈时把状态转换成有向图即可
那么n个有向图的情况
SG=SG[1]^SG[2]...^SG[n],即把所有SG异或起来即可
本题就是SG函数的应用:首先三个必败态2*2,2*3,3*2,然后将纸片切成两张等价于两个SG函数的异或
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std; int W,H;
int sg[][]; int SG(int w,int h){
if(w==&&h== || w==&&h== || w==&&h==)return sg[w][h]=;//必败态
if(sg[w][h]!=-)return sg[w][h];
int mex[]={};
for(int i=;i<=w-i;i++)//h不变,用两个sg的异或性质
mex[SG(i,h)^SG(w-i,h)]=;
for(int i=;i<=h-i;i++)//w不变
mex[SG(w,i)^SG(w,h-i)]=;
for(int i=;i<=;i++)
if(!mex[i])return sg[w][h]=i;
}
int main(){
memset(sg,-,sizeof sg);
while(cin>>W>>H){
//memset(sg,-1,sizeof sg);
if(SG(W,H)==)cout<<"LOSE"<<endl;
else cout<<"WIN"<<endl;
}
}
SG函数博弈——poj2311的更多相关文章
- 博弈问题之SG函数博弈小结
SG函数: 给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移 动者判负.事实上,这个游戏可以认为是所有Impartial Combinatorial Ga ...
- 【博弈论】【SG函数】poj2311 Cutting Game
由于异或运算满足结合律,我们把当前状态的SG函数定义为 它所能切割成的所有纸片对的两两异或和之外的最小非负整数. #include<cstdio> #include<set> ...
- HDU1536&&POJ2960 S-Nim(SG函数博弈)
S-Nim Time Limit: 2000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Submit Status ...
- HDU 5724 Chess (状态压缩sg函数博弈) 2016杭电多校联合第一场
题目:传送门. 题意:有n行,每行最多20个棋子,对于一个棋子来说,如果他右面没有棋子,可以移动到他右面:如果有棋子,就跳过这些棋子移动到后面的空格,不能移动的人输. 题解:状态压缩博弈,对于一行2^ ...
- HDU 5742 Chess SG函数博弈
Chess Problem Description Alice and Bob are playing a special chess game on an n × 20 chessboard. ...
- HDU 1848 SG函数博弈
Fibonacci again and again Problem Description 任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样定义的:F(1 ...
- hdu 3032 Nim or not Nim? (SG函数博弈+打表找规律)
Nim or not Nim? Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Sub ...
- Luogu P2148 [SDOI2009]E&D (sg函数 博弈)
题目 洛谷传送门 题解 打表找sgsgsg规律. 严谨证明见:纳尔的博客 CODE #include <bits/stdc++.h> using namespace std; int sg ...
- hdu 4388 Stone Game II sg函数 博弈
Stone Game II comes. It needs two players to play this game. There are some piles of stones on the d ...
随机推荐
- jQuery 引入多个库文件冲突
index.html <head><meta http-equiv="Content-Type" content="text/html; charset ...
- 使用nginx访问本地电脑的目录文件
cat /usr/local/opt/nginx/ //nginx路径 cd /usr/local/opt/nginx/html //localhost的指向 ln -s ~/Documents do ...
- k8s 映射 外部服务
把外部的服务,通过创建service和endpoint,把它映射到k8s内部来使用. 操作步骤: 在10.0.0.13上安装数据库 yum install mariadb-server -y syst ...
- 深入理解 js为什么没有函数重载,如何实现函数重载?
我的新博客 http://www.suanliutudousi.com/2017/08/24/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3-js%E4%B8%BA%E4%B ...
- web前端好书推荐 CSS权威指南《第3版,Bootstrap实战,精通CSS 高级Web标准解决方案 第2版 中文
在我的新博客中==> http://www.suanliutudousi.com/2017/08/24/web%E5%89%8D%E7%AB%AF%E5%A5%BD%E4%B9%A6%E6%8E ...
- Poi设置列样式
最近做的项目中用到Poi导出Excel文件做模板,其中有的列需要设置为文本格式,查资料发现都是给单元格设置样式,由于是模板单元格都没内容,所以不能通过设置单元格式样式的方式操作,网上有说法是不能设置列 ...
- 《人月神话》读书笔记 PB16110698 第七周(~4.19)
每逢读书笔记上交作业时刻,班级blog页面上总能看到<人月神话>相关的读书笔记,本次软工课邓老师推荐的第一篇读书笔记也是写的<人月神话>,算是对它“耳濡目染”了.本周,我终于抽 ...
- VBA中msgbox的用法小结
1.作用在消息框中显示信息,并等待用户单击按钮,可返回单击的按钮值(比如“确定”或者“取消”).通常用作显示变量值的一种方式.2.语法MsgBox(Prompt[,Buttons][,Title][, ...
- zepto(mark)
Zepto的设计目的是提供 jQuery 的类似的API,但并不是100%覆盖 jQuery .Zepto设计的目的是有一个5-10k的通用库.下载并快速执行.有一个熟悉通用的API,所以你能把你主要 ...
- python 怎么像shell -x 一样追踪脚本运行过程
python 怎么像shell -x 一样追踪脚本运行过程 [root@localhost keepalived]# python -m trace --trace mysql_start.py -- ...