传送门:windy和水星 -- 水星游戏 1

题意:在一张由 n*m 的格子组成的棋盘上放着 k 个骑士每个骑士的位置为(xi,yi),表示第xi行,第yi列骑士如果当前位置为(x,y),一步可以走的位置为

(x-2,y-1)

(x-2,y+1)

(x-1,y-2)

(x+1,y-2)

两人对弈,每次移动一个骑士,在同一时间可有多个骑士在同一格子,谁不能移动谁输现在给定初始棋面,问先手是否有必胜的策略?

分析:将k个骑士当成k个子游戏,然后求出k个子游戏的sg值,然后问题转换成有k堆石子,每堆有sg[i]个石子,先手可以选择一堆取1~sg[i]个石子,取完最后的石子的人赢,这就变成裸Nim游戏,将所有sg值异或判断是否为0即可。

#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 110
using namespace std;
int n,m,k;
int sg[N][N];
int dx[]={-,-,-,};
int dy[]={-,,-,-};
bool judge(int a,int b)
{
return a>=&&a<n&&b>=&&b<m;
}
int dfs(int x,int y)
{
if(~sg[x][y])return sg[x][y];
int vis[],temp;
memset(vis,false,sizeof(vis));
for(int i=;i<;i++)
{
int a=x+dx[i],b=y+dy[i];
if(!judge(a,b))continue;
if((temp=sg[x][y])==-)temp=dfs(a,b);
vis[temp]=;
}
for(int i=;i<;i++)
{
if(vis[i])continue;
return sg[x][y]=i;
}
}
int main()
{
while(scanf("%d%d%d",&n,&m,&k)>)
{
memset(sg,-,sizeof(sg));
sg[][]=sg[][]=sg[][]=sg[][]=;
for(int i=;i<n;i++)
for(int j=;j<m;j++)
if(sg[i][j]==-)dfs(i,j);
int x,y,flag=;
while(k--)
{
scanf("%d%d",&x,&y);
flag^=sg[x][y];
}
if(flag)puts("yes");
else puts("no");
}
}

SCU 3132(博弈)的更多相关文章

  1. SCU 3133(博弈)

    传送门:windy和水星 -- 水星游戏 2 题意:在一张由 n*m 的格子组成的棋盘上放着 k 个骑士每个骑士的位置为(xi,yi),表示第xi行,第yi列骑士如果当前位置为(x,y),一步可以走的 ...

  2. hdu----(1849)Rabbit and Grass(简单的尼姆博弈)

    Rabbit and Grass Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. HDU 5754 Life Winner Bo 组合博弈

    Life Winner Bo Problem Description   Bo is a "Life Winner".He likes playing chessboard gam ...

  4. HDU 2509 Nim博弈变形

    1.HDU 2509  2.题意:n堆苹果,两个人轮流,每次从一堆中取连续的多个,至少取一个,最后取光者败. 3.总结:Nim博弈的变形,还是不知道怎么分析,,,,看了大牛的博客. 传送门 首先给出结 ...

  5. HDU 1907 Nim博弈变形

    1.HDU 1907 2.题意:n堆糖,两人轮流,每次从任意一堆中至少取一个,最后取光者输. 3.总结:有点变形的Nim,还是不太明白,盗用一下学长的分析吧 传送门 分析:经典的Nim博弈的一点变形. ...

  6. 51nod1072(wythoff 博弈)

    题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1072 题意: 中文题诶~ 思路: 博弈套路是有的, 找np局 ...

  7. ACM:SCU 4437 Carries - 水题

    SCU 4437  Carries Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu  Practice  ...

  8. ACM: SCU 4438 Censor - KMP

     SCU 4438 Censor Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu  Practice D ...

  9. ACM: NBUT 1107 盒子游戏 - 简单博弈

     NBUT 1107  盒子游戏 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:  Practice  Appoint ...

随机推荐

  1. ubuntu无法解析主机错误与解决的方法

    今天在用命令行进行操作的时候,出现了无法解析主机的错误.google了一下,原来是hosts文件的问题.更改过来即可了 进入终端,输入 sudo gedit /etc/hosts.输入password ...

  2. vs2010中将复制过来的文件或文件夹显示到解决方案管理

    今天在给一个做好的页面上加.net程序,我先将程序中的文件夹复制到解决方案中,可是在VS2010的解决方案资源管理器中并没有这样的文件夹,可明明 在这里,为什么显示不出来,应该在VS2010的哪个地方 ...

  3. 关于new enhancement的一些知识

    关于new enhancement sap源程序里也给我们留了很多. 以下例句point .section.spot说明这些知识点. 1.不管是point还是section 都是基于spot的,spo ...

  4. linux命令:rm

    删文件要一个个回答y,谁有好办法自动删除? rm -rf 用rm递归删除目录下面的所有.o文件: find . -name "*.o"  | xargs rm -f :

  5. PP屏幕增强点

    生产订单CO01/CO02/CO03屏幕增强 smod:PPCO0012 工票输入CO11N SMOD:CONFPP07 增强里经常会用内存读取数据:比如: ) TYPE c. FIELD-SYMBO ...

  6. sed正则表达式

    sed的正则匹配如何实现非贪婪? sed的正则用的是BREs/EREs,不支持非贪婪模式.当然有一些方法可以实现非贪婪,比如: $ echo abcOabcdOabc | sed 's/.*O//' ...

  7. asp.net web api帮助文档的说明

    为asp.net的mvc web api填写自己的帮助文档 1. 加入Help的area(能够通过命令行或其它方式加入) 命令行:Install-Package Microsoft.AspNet.We ...

  8. regsvr32 命令小集注册OCX控件,注册控件(包括十几个举例)

    Regsvr32 进程文件: regsvr32 or regsvr32.exe  进程名称: Microsoft DLL Registration Service  英文描述: regsvr32.ex ...

  9. 与众不同 windows phone (6) - Isolated Storage(独立存储)

    原文:与众不同 windows phone (6) - Isolated Storage(独立存储) [索引页][源码下载] 与众不同 windows phone (6) - Isolated Sto ...

  10. IIS部署asp.net报404错误

    1).所建网站->(右键)权限->"ASP.NET计算机帐户"是否已添加.     2).所建网站->(右键)属性->ASP.NET选项卡->版本是否 ...