bzoj3106 [cqoi2013]棋盘游戏
Description
Input
Output
Sample Input
Sample Output
HINT
n<=20
正解:对抗搜索。
首先如果先手不能在第一步就赢,那么他就必输,因为后手可以把先手围在角落里。
然后设$f[0/1][y][a][b][c][d]$表示当前是先手/后手,总共走了几步,先手在$(a,b)$,后手在$(c,d)$,直接按照对抗搜索的方法转移就行。
以前没有写过对抗搜索,还是挂一个链接:博弈基础——极大极小搜索
#include <bits/stdc++.h>
#define il inline
#define RG register
#define ll long long
#define inf (1<<30) using namespace std; const int d1[]={,,-,,,,-,};
const int d2[]={,,,-,,,,-}; int f[][][][][][],n,a,b,c,d; il int gi(){
RG int x=,q=; RG char ch=getchar();
while ((ch<'' || ch>'') && ch!='-') ch=getchar();
if (ch=='-') q=-,ch=getchar();
while (ch>='' && ch<='') x=x*+ch-,ch=getchar();
return q*x;
} il int dfs(RG int x,RG int y,RG int a,RG int b,RG int c,RG int d){
if (y>*n) return inf; if (a==c && b==d) return x?inf:;
if (f[x][y][a][b][c][d]) return f[x][y][a][b][c][d]; RG int res;
if (x){
res=inf;
for (RG int i=,X,Y;i<;++i){
X=c+d1[i],Y=d+d2[i];
if (X>= && X<=n && Y>= && Y<=n)
res=min(res,dfs(x^,y+,a,b,X,Y));
}
} else{
res=;
for (RG int i=,X,Y;i<;++i){
X=a+d1[i],Y=b+d2[i];
if (X>= && X<=n && Y>= && Y<=n)
res=max(res,dfs(x^,y+,X,Y,c,d));
}
}
return f[x][y][a][b][c][d]=res+;
} int main(){
#ifndef ONLINE_JUDGE
freopen("chess.in","r",stdin);
freopen("chess.out","w",stdout);
#endif
n=gi(),a=gi(),b=gi(),c=gi(),d=gi();
if (abs(a-c)+abs(b-d)==) puts("WHITE 1");
else printf("BLACK %d\n",dfs(,,a,b,c,d));
return ;
}
bzoj3106 [cqoi2013]棋盘游戏的更多相关文章
- 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的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. ...
- 【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 ...
- 【BZOJ3106】[CQOI2013] 棋盘游戏(对抗搜索)
点此看题面 大致题意: 在一张\(n*n\)的棋盘上有一枚黑棋子和一枚白棋子.白棋子先移动,然后是黑棋子.白棋子每次可以向上下左右四个方向中任一方向移动一步,黑棋子每次则可以向上下左右四个方向中任一方 ...
- 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的移动规则:只能移 ...
- P4576 [CQOI2013]棋盘游戏
传送门 很显然,除非白子和黑子相邻,否则必然是黑子获胜虽然我并没有看出来 那么现在对黑子来说它要尽可能快的赢,对白子它要多苟一会儿 然后就是这个叫做对抗搜索的东西了 //minamoto #inclu ...
- BZOJ 3106: [cqoi2013]棋盘游戏
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 859 Solved: 356[Submit][Status][Discuss] Descriptio ...
随机推荐
- ServiceHelper
public class ServiceHelper { private static string _baseUrl = $@"http://{Config.Instance.MesSer ...
- C#把大写英文变成小写英文,把小写英文变成大写英文
static void Main(string[] args) { string s; // 声明一个变量,来接受用户输入的值. Console.WriteLine("请输入一个字符串:& ...
- (原创).Net将EF运用于Oralce一 准备工作
网上有很多EF运用于Oracle的博文,但是找了半天发现大多数博文大都语焉不详,于是决定自己折腾. 首先我的开发工具为vs2010,那么最适用于VS2010的EF版本为多少呢?答案是EF5.我在Sta ...
- IIS调试技术之 Debug Diagnostic (调试诊断)
IIS 调试技术之 Debug Diagnostic (调试诊断) 1 概述 1.1 文档简介 系统出现错误或崩溃,免不了要进行调试.调试能进行的前提是错误能重现,但实际上要重现一个错误有 ...
- C# XML相关
XmlDocument doc = new XmlDocument(); 1.string类型的xml,如何转换成xml类型 doc.LoadXml("需要传入的string类型的xml&q ...
- Centos7 linux 安装 redis 遇到的几个问题
环境:centos7 + redis 5.0 解决方案仅供参考,如不能解决问题,请查找请他方案. 1.不能编译没有GCC 编译工具 make报错: make[1]: [persist-set ...
- poj 1276(多重背包+最接近)
http://www.cnblogs.com/rainydays/archive/2013/03/08/2950258.html http://www.cnblogs.com/ziyi--caolu/ ...
- nginx关于 error_page指令详解.md
error_page指令解释 nginx指令error_page的作用是当发生错误的时候能够显示一个预定义的uri,比如: error_page 502 503 /50x.html; 这样实际上产生了 ...
- CSS3动画功能
1.transition功能 transition属性的使用方法:transition:property duration timing-function; 其中property表示对哪个属性进行平滑 ...
- SQL Server ->> FileTable
FileTable是SQL Server 2012的新特性之一.它是基于SQL Server 2008的FILESTREAM特性上而来的,允许我们把Windows文件存储在SQL Server中,让S ...