博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SCU 3132(博弈)
阅读量:7223 次
发布时间:2019-06-29

本文共 769 字,大约阅读时间需要 2 分钟。

 

传送门:

题意:在一张由 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 
#include
#include
#define N 110using namespace std;int n,m,k;int sg[N][N];int dx[]={-2,-2,-1,1};int dy[]={-1,1,-2,-2};bool judge(int a,int b){ return a>=0&&a
=0&&b
0) { memset(sg,-1,sizeof(sg)); sg[0][0]=sg[0][1]=sg[1][0]=sg[1][1]=0; for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/lienus/p/4326357.html

你可能感兴趣的文章
partproble在RHEL 6下无法更新分区信息
查看>>
linux服务之nfs
查看>>
linux ps命令,查看某进程cpu和内存占用率情况, linux ps命令,查看进程cpu和内存占用率排序。 不指定...
查看>>
iHover – 30+ 纯 CSS 实现的超炫的图片悬停特效
查看>>
Android MediaPlayer 和 NativePlayer 播放格式控制
查看>>
总结一下工作中用到的Mybatis业务逻辑
查看>>
Android图表日历控件组件
查看>>
Linux下的网络环境配置
查看>>
mysql---总体备份和增量备份
查看>>
裸机代码(uboot) : clear bss
查看>>
PHP判断访问者手机移动端还是PC端的函数,亲测好用
查看>>
http://jingyan.baidu.com/article/bad08e1ee14ae409c85121cf.html
查看>>
perf之record
查看>>
C#中的数据格式转换 (未完待更新)
查看>>
启动vsftpd失败
查看>>
yii2组件之下拉框带搜索功能(yii-select2)
查看>>
Java串口通信详解
查看>>
Newtonsoft 自定义输出内容
查看>>
HTML图片元素(标记)
查看>>
windows server 2008 域控安装
查看>>