http://www.lydsy.com/JudgeOnline/problem.php?id=3106

白棋如果第一步不能赢,那么一定输

因为可以黑棋走的距离比白棋大,黑棋可以下一步吃掉白棋,也可以下一步离开白棋的吃子范围

n才20,我们可以dfs搜索所有的局面求黑棋取胜的回合数

记录当前状态到游戏结束的回合数

如果现在白棋走,那它要尽可能的拖延时间,所以就是所有的后继状态取大

如果现在黑棋走,那它要尽快的取胜,所以就是所有的后继状态取小

边界是当两个棋子到同一位置时,根据前面的分析,应该必须是黑棋完成的最后一步

而dfs到下一回合,双方互换

所以当前如果是白棋,就return 0

如果是黑旗,就return 无穷大

#include<cstdio>
#include<algorithm> using namespace std; int n; int dp[][][][][][]; int dfs(int who,int now,int r1,int c1,int r2,int c2)
{
if(now>n*) return n*;
if(r1==r2 && c1==c2) return who ? n* : ;
if(dp[who][now][r1][c1][r2][c2]) return dp[who][now][r1][c1][r2][c2];
int ans;
if(!who)
{
ans=;
if(r1>) ans=max(ans,dfs(,now+,r1-,c1,r2,c2));
if(r1<n) ans=max(ans,dfs(,now+,r1+,c1,r2,c2));
if(c1>) ans=max(ans,dfs(,now+,r1,c1-,r2,c2));
if(c1<n) ans=max(ans,dfs(,now+,r1,c1+,r2,c2));
}
else
{
ans=n*;
if(r2>) ans=min(ans,dfs(,now+,r1,c1,r2-,c2));
if(r2>) ans=min(ans,dfs(,now+,r1,c1,r2-,c2));
if(r2<n) ans=min(ans,dfs(,now+,r1,c1,r2+,c2));
if(r2<n-) ans=min(ans,dfs(,now+,r1,c1,r2+,c2));
if(c2>) ans=min(ans,dfs(,now+,r1,c1,r2,c2-));
if(c2>) ans=min(ans,dfs(,now+,r1,c1,r2,c2-));
if(c2<n) ans=min(ans,dfs(,now+,r1,c1,r2,c2+));
if(c2<n-) ans=min(ans,dfs(,now+,r1,c1,r2,c2+));
}
ans++;
return dp[who][now][r1][c1][r2][c2]=ans;
} int main()
{
int r1,c1,r2,c2;
scanf("%d%d%d%d%d",&n,&r1,&c1,&r2,&c2);
if(abs(r1-r2)+abs(c1-c2)<=)
{
printf("WHITE 1");
return ;
}
printf("BLACK %d",dfs(,,r1,c1,r2,c2));
}

bzoj千题计划200:bzoj3106: [cqoi2013]棋盘游戏的更多相关文章

  1. bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  2. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔

    http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...

  3. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  4. bzoj千题计划177:bzoj1858: [Scoi2010]序列操作

    http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...

  5. bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...

  6. bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...

  7. bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹

    http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...

  8. bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机

    http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...

  9. bzoj千题计划250:bzoj3670: [Noi2014]动物园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...

随机推荐

  1. CentOS 7 Apache服务的安装与配置

    原文出处:http://blog.51cto.com/13525470/2070375 一.Apache简介 Apache 是一个知名的开源Web服务器.早期的Apache服务器由Apache Gro ...

  2. Daily Scrum - 12/0809

    Meeting Minutes (08的Scrum报告放在word里,publish没有成功,所以这是08-09的报告,抱歉…): 卡片翻转的效果确认完成: 按钮蓄力的效果确认完成: 按钮上移的效果确 ...

  3. python数据分析Adult-Salary预测

    具体文档戳下方网站 https://pan.wps.cn/l/s4ojed8 代码如下: import pandas as pdimport numpy as npimport matplotlib. ...

  4. VS2013 单元测试

    1.打开VS2013 --> 新建一个项目.这里创建一个c#控制台项目.取名为ccj_test1 2.进入控制台项目ccj_test1的Program类,创建一个add静态方法,并将progra ...

  5. Python爬虫:新浪新闻详情页的数据抓取(函数版)

    上一篇文章<Python爬虫:抓取新浪新闻数据>详细解说了如何抓取新浪新闻详情页的相关数据,但代码的构建不利于后续扩展,每次抓取新的详情页时都需要重新写一遍,因此,我们需要将其整理成函数, ...

  6. Linux命令(七)查找文件或目录 find

    find 命令可以根据给定的路劲和表达式查找指定的文件或目录.find 参数选项很多,并且支持正则表达式,功能强大. 和管道结合使用可以实现复杂的功能,是系统管理和普通用户必须掌握的命令. 一.fin ...

  7. ESXi 20181229 刚学到的知识点

    1. 查看性能 能够获取到服务器的电源消耗 这里很明显的就能看到 2路服务器的情况下 电源在300w 以下,  平均值 270w 左右. 2. 然后在配置里面能够看到 服务器的信息 设置还能看到 序列 ...

  8. CentOS下 NFS的简单使用以及windows 关在linux的NFS存储方法

    1. 全部安装的情况下NFS已经安装到服务器上面了,如果没有安装的话 需要使用如下命令进行安装 yum -y install nfs-utils rpcbind 2. 创建需要使用的NFS目录 mkd ...

  9. [转帖] Linux 创建一个简单的私有CA、发证、吊销证书

    原创帖子地址:   https://blog.csdn.net/mr_rsq/article/details/71001810 Linux 创建一个简单的私有CA.发证.吊销证书 2017年04月30 ...

  10. Java时间的转换

    String DATE_FORMAT = "yyyy-MM-dd"; LocalDate localDate = LocalDate.now(); long startTime = ...