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. 设计模式 笔记 单例模式 Singleton

    //---------------------------15/04/09---------------------------- //Singleton 单例模式-----对象创建型模式 /* 1: ...

  2. Js_图片轮换

    本文介绍用javascript制作图片轮换效果,原理很简单,就是设置延时执行一个切换函数,函数里面是先设置下面的缩略图列表的白框样式,再设置上面大图的src属性,在IE中显示很正常,可是在FF中会有变 ...

  3. 将Centos 的默认yum源改为阿里云的yum源后出现的问题

    阿里各版本yum源如下: Centos5:http://mirrors.aliyun.com/repo/Centos-5.repo Centos6:http://mirrors.aliyun.com/ ...

  4. 利用BFS实现最短路

    首先,我们要知道BFS的思想,BFS全称是Breadth-First-Search. 二叉树的BFS:通过BFS访问,它们的访问顺序是它们到根节点距离从小到大的排序. 图的BFS:同样的,离起点越近, ...

  5. WebShell代码分析溯源(第1题)

    <?php $POST['POST']='assert';$array[]=$POST;$array[0]['POST']($_POST['assert']);?> assert,是php ...

  6. @Param注解的用法解析

    实例一 @Param注解单一属性 dao层示例 Public User selectUser(@param(“userName”) String name,@param(“userpassword”) ...

  7. Linux内核分析——第四周学习笔记

    扒开系统调用的三层皮[上] 前言:以下笔记除了一些讲解视频中的概念记录,图示.图示中的补充文字.总结.分析.小结部分均是个人理解.如有错误观点,请多指教! 补充:[系统调用的参数传递方法]视频中讲解简 ...

  8. hadoop-2.7.2 分布式集群搭建

    1.机器信息 五台centos 64位机器 2.集群规划 Server Name Hadoop Cluster Zookeeper   Ensemble HBase Cluster Hadoop01 ...

  9. 《当大数据遇见网络:大数据与SDN》

    总体结构: <当大数据遇见网络:大数据与SDN> 摘要 大数据和SDN无论是对于学术界还是工业界来说都极具吸引力.传统上人们都是分别在最前沿工作中研究这两个重要的领域.然而一方面,SDN的 ...

  10. 移动硬盘插到台式机,外接网卡无法连接wifi处理

    在网上买了一个希捷500G的移动硬盘,避免供电不足,硬盘需要插到台式机后面,高高兴兴的通过USB连接了,发现硬盘可以用,然后打算网上查询是否正品,发现不能连接网络了,我是台式机,用360wifi作为无 ...