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. SpringBoot整合Mybatis之进门篇

    已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...

  2. HTML-JS 循环 函数 递归

    [循环结构的执行步骤] 1.声明循环变量 2.判断循环条件 3.执行循环体操作 4.更新循环变量 然后,循环执行2-4,直到条件不成立时,跳出循环. while循环()中的表达式,运算结果可以是各种类 ...

  3. docker之镜像管理命令

    一.docker image 镜像管理命令 指令 描述ls 列出本机镜像build 构建镜像来自Dockerfilehistory 查看镜像历史inspect 显示一个或多个镜像详细信息pull 从镜 ...

  4. 如何在 vCenter Server 上将虚拟机注册或添加到清单中

      免责声明:本文为 Registering or adding a virtual machine to the Inventory in vCenter Server or in an ESX/E ...

  5. Intellij IDEA 文件修改提示星号

    https://www.cnblogs.com/zheting/p/7594073.html

  6. Linux实验报告

    第一次链接: http://www.cnblogs.com/L1nke/p/4966820.html 第二次链接: http://www.cnblogs.com/L1nke/p/4992758.htm ...

  7. 20135220谈愈敏Blog5_系统调用(下)

    系统调用(下) 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 给Me ...

  8. Linux内核分析(第三周)

    构造一个简单的linux系统menuOS. 一.简介 1.两把宝剑:中断-上下文的切换(保存现场和恢复现场) 进程-上下文的切换 2.linux-3.18.6 arch/x86目录下的代码是我们重点关 ...

  9. Leetcode题库——36.有效的数独

    @author: ZZQ @software: PyCharm @file: leetcode36_isValidSudoku.py @time: 2018/11/19 19:27 要求:判断一个 9 ...

  10. Visual Studio(VS)C++单元测试

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Visual Studio(VS)C++单元测试     本文地址:http://techie ...