3106 cqoi2013 棋盤遊戲

2021-09-09 07:21:34 字數 848 閱讀 5801

乙個n*n(n>=2)棋盤上有黑白棋子各一枚。遊戲者a和b輪流移動棋子,a先走。

a的移動規則:只能移動白棋子。可以往上下左右四個方向之一移動一格。

b的移動規則:只能移動黑棋子。可以往上下左右四個方向之一移動一格或者兩格。

和通常的「吃子」規則一樣,當某遊戲者把自己的棋子移動到對方棋子所在的格仔時,他就贏了。兩個遊戲者都很聰明,當可以獲勝時會盡快獲勝,只能輸掉的時候會盡量拖延時間。你的任務是判斷誰會贏,需要多少回合。

比如n=2,白棋子在(1,1),黑棋子在(2,2),那麼雖然a有兩種走法,第二個回合b總能取勝。

n較小,直接搜。

但是成環,所以還要記個步數。

感受一下,最多不會走太多步,大概3n左右。

code:

#include

#include

#include

#include

#include

using

namespace std;

const

int inf=

1<<28;

int f[21]

[21][

21][21

][61]

[2];

int yh[10]

=;int yl[10]

=;int n,x,y,x,y;

intdfs

(int x,

int y,

int x,

int y,

int c,

int op)

return

++g;

}int

main()

BZOJ 3106 cqoi2013 棋盤遊戲

time limit 10 sec memory limit 128 mb submit 859 solved 356 submit status discuss 乙個n n n 2 棋盤上有黑白棋子各一枚。遊戲者a和b輪流移動棋子,a先走。l a的移動規則 只能移動白棋子。可以往上下左右四個方向之...

CQOI2013 棋盤遊戲

emmmm因為b的活動範圍比a廣,所以只要不是第一步被a吃掉,終究會贏得勝利的 根本不會有平局嘛 上面那個結論一定要先確定好,不知道結果的話沒法對抗搜尋的。然後就.我們的目的是讓b盡快地贏,a盡可能地多跑一會兒,所以前者取min後者取max。qaq 但是講道理應該步數不應該是2 n以內嘛.我也不太明...

CQOI2013 新nim遊戲題解

傳統的nim遊戲是這樣的 有一些火柴堆,每堆都有若干根火柴 不同堆的火柴數量可以不同 兩個遊戲者輪流操作,每次可以選乙個火柴堆拿走若干根火柴。可以只拿一根,也可以拿走整堆火柴,但不能同時從超過一堆火柴中拿。拿走最後一根火柴的遊戲者勝利。本題的遊戲稍微有些不同 在第乙個回合中,第乙個遊戲者可以直接拿走...