多校联合集训之ECNU专场 G:Queen’s Case hdu:3514
(2010-08-09 09:19:19)
标签:
多校联合集训ecnu专场it |
分类: 动态规划 |
题目不描述:
解题报告:
博弈,也可以搜索,从最终态开始,建立dp[2][30][30][30][30]的数组
dp[0][i][j][x][y]表示女王走完后,女王在i,j位置,士兵在x,y位置时的胜负状况
0:不确定,1:士兵胜,-1女王胜。
dp[0][i][j][x][y]表示士兵走完后,女王在i,j位置,士兵在x,y位置时的胜负状况
自底向上迭代:
首先把女王最后一步的必胜态和必输态决定下来(程序while之前的处理部分)
然后轮流依次士兵-女王-士兵-女王。。。。。
直到状态不能在修改。
严格按照解题报告里的两句话:
(1)如果当前先手能到达对手的必输状态,那么当前状态就是必赢状态。
(2)如果当前先手能到达的状态都是对手的必赢状态,那么当前状态一定是必输态。
代码如下:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int r, c, ans[2][30][30][30][30], move[5][2] = {{1, 0}, {-1, 0},
{0, 1}, {0, -1}, {0, 0}};
char x[35][35];
bool judge(int a, int b)
{
}
int main()
{