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 ...
随机推荐
- linux-pm2用法
devo.ps团队对JavaScript的迷恋已经不是什么秘密了;node.js作为服务器端,AngularJS作为客户端,某种程度上说,我们的堆栈是用它建成的.我们构建静态客户端和RESTful J ...
- [转]微信小程序联盟 跳坑《一百八十一》设置API:wx.openSetting使用说明
本文转自:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=4066 这个API解决了过去一个长久以来无法解决的问题,如何让用户重 ...
- vue 报错./lib/html5-entities.js, this relative module was not found
今天在做项目一直都挺正常的,我稍微休息一下回来就报这个错,我百度了半天也没找到答案.然后我只能重新安装vue-cli,奇迹发生了错误没有,然后我又休息了一会发现有报错了.气炸了都. 话不多多说直接上图 ...
- Azure 上 Linux 虚拟机 Mac 地址的持久化
有些用户在使用 Azure Linux 虚拟机安装软件时,有些软件的 license 会和当前系统的 mac 地址绑定,那么在 Azure VM 重启,reszie(改变尺寸大小),停止然后再启动的时 ...
- node.js内存缓存的性能情况
1. WEB 服务性能测试和优化 1.1 测试环境搭建 网络环境:内网 压力测试服务器: 服务器系统:Linux 2.6.18 服务器配置:Intel® Xeon™ CPU 3.40GHz 4 C ...
- go get 下载需要的相关工具
文档来源: https://code.google.com/p/go-wiki/wiki/GoGetTools 被墙了,所以转在这个备用. Installing Version Control Too ...
- 开启VS2017之旅
- Retrofit 抽象工厂模式
https://blog.csdn.net/h176nhx7/article/details/78139371
- EF多实体对应单表
1.EF多实体对应单表 适用场景:单数据库表,表数据有较长用字段,有不常用或者大数据字段. 2.建表语句 CREATE TABLE [Chapter2].[Photograph]( ,) primar ...
- pymsql模块使用
数据库连接客户端 链接:https://pan.baidu.com/s/1pM0h4SV 密码:614v sql指令基本用法: