P4576 [CQOI2013]棋盘游戏
很显然,除非白子和黑子相邻,否则必然是黑子获胜虽然我并没有看出来
那么现在对黑子来说它要尽可能快的赢,对白子它要多苟一会儿
然后就是这个叫做对抗搜索的东西了
//minamoto
#include<bits/stdc++.h>
#define fp(i,a,b) for(register int i=a,I=b+1;i<I;++i)
#define fd(i,a,b) for(register int i=a,I=b-1;i>I;--i)
using namespace std;
inline int max(const int &x,const int &y){return x>y?x:y;}
inline int min(const int &x,const int &y){return x<y?x:y;}
inline int _abs(const int &x){return x<0?-x:x;}
int dx[]={1,0,-1,0,2,0,-2,0},dy[]={0,1,0,-1,0,2,0,-2};
const int N=21,inf=1e9;
int f[2][65][N][N][N][N];
int n,a,b,c,d;
int dfs(int x,int y,int a,int b,int c,int d){
if(y>3*n)return inf;if(a==c&&b==d)return x?inf:0;
if(f[x][y][a][b][c][d])return f[x][y][a][b][c][d];
int ans=0,xx,yy;
if(x){
ans=inf;fp(i,0,7){
xx=c+dx[i],yy=d+dy[i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=n)ans=min(ans,dfs(0,y+1,a,b,xx,yy));
}
}else{
fp(i,0,3){
xx=a+dx[i],yy=b+dy[i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=n)ans=max(ans,dfs(1,y+1,xx,yy,c,d));
}
}f[x][y][a][b][c][d]=++ans;return ans;
}
int main(){
// freopen("testdata.in","r",stdin);
scanf("%d%d%d%d%d",&n,&a,&b,&c,&d);
if(_abs(a-c)+_abs(d-b)==1)return puts("WHITE 1"),0;
return printf("BLACK %d\n",dfs(0,0,a,b,c,d)),0;
}
P4576 [CQOI2013]棋盘游戏的更多相关文章
- 【BZOJ 3106】 3106: [cqoi2013]棋盘游戏 (对抗搜索)
3106: [cqoi2013]棋盘游戏 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 544 Solved: 233 Description 一个 ...
- 3106: [cqoi2013]棋盘游戏
3106: [cqoi2013]棋盘游戏 链接 分析: 极大极小搜索 + 记忆化. 代码 #include<bits/stdc++.h> using namespace std; type ...
- BZOJ 3106: [cqoi2013]棋盘游戏(对抗搜索)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3106 对抗搜索,f[x][y][a][b][c][d]表示当前谁走,走了几步,及位置. (因为 ...
- [CQOI2013]棋盘游戏
Description 一个n*n(n>=2)棋盘上有黑白棋子各一枚.游戏者A和B轮流移动棋子,A先走. A的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. B的移动规则:只能移 ...
- bzoj千题计划200:bzoj3106: [cqoi2013]棋盘游戏
http://www.lydsy.com/JudgeOnline/problem.php?id=3106 白棋如果第一步不能赢,那么一定输 因为可以黑棋走的距离比白棋大,黑棋可以下一步吃掉白棋,也可以 ...
- bzoj3106 [cqoi2013]棋盘游戏
Description 一个n*n(n>=2)棋盘上有黑白棋子各一枚.游戏者A和B轮流移动棋子,A先走. l A的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. ...
- 【BZOJ3106】[CQOI2013] 棋盘游戏(对抗搜索)
点此看题面 大致题意: 在一张\(n*n\)的棋盘上有一枚黑棋子和一枚白棋子.白棋子先移动,然后是黑棋子.白棋子每次可以向上下左右四个方向中任一方向移动一步,黑棋子每次则可以向上下左右四个方向中任一方 ...
- [bzoj3106][cqoi2013][棋盘游戏] (对抗搜索+博弈论)
Description 一个n*n(n>=2)棋盘上有黑白棋子各一枚.游戏者A和B轮流移动棋子,A先走. l A的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. ...
- BZOJ 3106: [cqoi2013]棋盘游戏
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 859 Solved: 356[Submit][Status][Discuss] Descriptio ...
随机推荐
- 【02】HTML5与CSS3基础教程(第8版)(全)
[02]HTML5与CSS3基础教程(第8版)(全) 共392页. (魔芋:大体上扫了一遍.没有什么新东西,都是入门的一些基础知识.) 已看完. [美]elizabeth cast ...
- 九度oj 题目1438:最小公倍数
题目1438:最小公倍数 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2451 解决:2057 题目描述: 给定两个正整数,计算这两个数的最小公倍数. 输入: 输入包含多组测试数据,每 ...
- 编程数学(A-1)-(B-1)-一个数的负次方怎么算
一个数的负几次方就是这个数的几次方的倒数.当这个数是正整数时,也就是说一个数的负n次方就是这个数的n次方分之一.例如: 2的-2次方=2的2次方分之1=4分之13的-2次方=3的2次方分之1=9分之1 ...
- POJ 3268_Silver Cow Party
题意: n个地方,标号1~n,每个地方都有一头牛,现在要他们都去往标号为x的地方,再从x返回,每条道路都是单向的,求所有牛走的来回的最短路中的最大值. 分析: 注意在求每头牛走到x时,挨个算肯定超时, ...
- SPOJ SUMPRO(数学)
题意: 给出一个数N,问所有满足n/x=y(此处为整除)的所有x*y的总和是多少.对答案mod(1e9+7). 1 <= T <= 500. 1 <= N <= 1e9. 分析 ...
- JAVA生成扫描条形码
条形码是一种可视化.机器可读的数据,这些数据通常描述了携带该条码的物品的相关信息.条形码已经广泛被应用在商品流通,图书管理,邮政管理和银行系统等领域.在这篇文章中,将介绍如何生成和扫描一些常见的一维和 ...
- xming + putty remote GUI
xming 和putty的配置网上有很多 但是在使用时发现有个问题, 记录一下. 在配置完成后,远程运行图形化程序经常会说can not open display等错误. 这有可能是因为xming的安 ...
- HDU1215--七夕节
找出小于N的全部因子的和,N比較大,非常明显要打表来做,不然肯定会超时 方法就是枚举范围内每一个整数.然后再枚举范围内这个整数的全部的倍数,加上这个数 由于这个整数的倍数中一定含有这个整数因子,这样速 ...
- SQL Server 海量数据查询代码优化以及建议
1.应尽量避免在 where 子句中对字段进行 null 值推断,否则将导致引擎放弃使用索引而进 行全表扫描,如: select id from t where num is nu ...
- C++之new和malloc差别
在C++程序猿面试中.非常easy被问到new 和 malloc的差别.偶尔在quora上逛.看到Robert Love的总结.才发现自己仅仅知道里面的一两项就沾沾自喜,从来没有像这位大牛一 ...