BZOJ 3106 棋盘游戏
Description
一個(gè)\(n \times n(n \le 2)\)棋盤上有黑白棋子各一枚。游戲者A和B輪流移動(dòng)棋子,A先走。
A的移動(dòng)規(guī)則:只能移動(dòng)白棋子。可以往上下左右四個(gè)方向之一移動(dòng)一格。
B的移動(dòng)規(guī)則:只能移動(dòng)黑棋子。可以往上下左右四個(gè)方向之一移動(dòng)一格或者兩格。
和通常的“吃子”規(guī)則一樣,當(dāng)某游戲者把自己的棋子移動(dòng)到對(duì)方棋子所在的格子時(shí),他就贏了。兩個(gè)游戲者都很聰明,當(dāng)可以獲勝時(shí)會(huì)盡快獲勝,只能輸?shù)舻臅r(shí)候會(huì)盡量拖延時(shí)間。你的任務(wù)是判斷誰會(huì)贏,需要多少回合。
比如\(n=2\),白棋子在\((1,1)\),黑棋子在\((2,2)\),那么雖然A有兩種走法,第二個(gè)回合B總能取勝。
Input
輸入僅一行,包含五個(gè)整數(shù)\(n, r_{1}, c_{1}, r_{2}, c_{2}\),即棋盤大小和棋子位置。白色棋子在\((r_{1},c_{1})\),黑色棋子在\((r_{2},c_{2})(1 \le r_{1},c_{1},r_{2},c_{2} \le n)\)。黑白棋子的位置保證不相同。
Output
輸出僅一行,即游戲結(jié)果。如果A獲勝,輸出WHITE \(x\);如果B獲勝,輸出BLACK \(x\);如果二者都沒有必勝策略,輸出DRAW。
Sample Input
2 1 1 2 2
Sample Output
BLACK 2
HINT
\(n \le 20\)
首先有個(gè)結(jié)論可以判勝負(fù):
如果A與B只相差一格,那么A一定獲勝;否則B一定獲勝。那個(gè)平局只是來賣個(gè)萌的。(B走的快一些)
然后就是求合法的步數(shù)了,這個(gè)是CLB告訴我的極大極小搜索。
我開始裸搜果斷TLE,加了記憶化,果斷WA,沒怎么打過,怎么調(diào)也調(diào)不對(duì),最后還是參照了別人的程序長(zhǎng)了見識(shí)。
轉(zhuǎn)載于:https://www.cnblogs.com/mmlz/p/4306236.html
總結(jié)
以上是生活随笔為你收集整理的BZOJ 3106 棋盘游戏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常见浏览器兼容性问题与解决方式
- 下一篇: C51端口结构和工作原理(转)