BZOJ3106/CQOI2013/棋盘游戏

Posted on By 二价氢

#题目描述

一个n*n(n>=2)棋盘上有黑白棋子各一枚。游戏者A和B轮流移动棋子,A先走。

  1. A的移动规则:只能移动白棋子。可以往上下左右四个方向之一移动一格。
  2. B的移动规则:只能移动黑棋子。可以往上下左右四个方向之一移动一格或者两格。

和通常的“吃子”规则一样,当某游戏者把自己的棋子移动到对方棋子所在的格子时,他就赢了。两个游戏者都很聪明,当可以获胜时会尽快获胜,只能输掉的时候会尽量拖延时间。你的任务是判断谁会赢,需要多少回合。

比如n=2,白棋子在(1,1),黑棋子在(2,2),那么虽然A有两种走法,第二个回合B总能取胜。

#做法

暴力搞搞即可

我们记\(f_{x_a,y_a,x_b,y_b,dep,t}\)表示A的棋子在\((x_a,y_a)\),B的棋子在\((x_b,y_b)\),当前是第\(dep\)步,轮到\(t\)走

同时,我们发现,A必败,除非开始的时候A和B在一起(\(\mathrm{abs}(x_a-x_b)+\mathrm{abs}(y_a-y_b)=1\))

你看B那里,一次最多走两步!就算玩捉迷藏也赢了啊!

然后顶多吧整个棋盘走一边啥的,所以搜索的层数不会太深

#复杂度分析

反正很大,但是就是T不了(不要吐槽我编译超时!)

#AC Code