bzoj千题计划200:bzoj3106: [cqoi2013]棋盘游戏
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]棋盘游戏的更多相关文章
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
- bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)
https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...
- bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹
http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...
- bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机
http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...
- bzoj千题计划250:bzoj3670: [Noi2014]动物园
http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...
随机推荐
- Linux内核分析第五章读书笔记
第五章 系统调用 在操作系统中,内核提供了用户进程与内核进行交互的一组接口,这些接口在应用程序和内核之间扮演了使者的角色,保证系统稳定可靠,避免应用程序肆意妄行. 5.1 与内核通信 系统调用在用户空 ...
- 每日scrum(2)
今天是冲刺的第二天,小组主要做了界面的美化,加入了软件的开始动画,以及学校景点的美图介绍: 主要的问题在于除了开始界面,进入软件之后还是有待改进,功能的呈现有待加强. 任务看板: 燃尽图: 会议照片:
- 第一个Spring冲刺周期团队进展报告
第一天:学习了解ocr技术 第二天:继续学习了解ocr技术 第三天:开始尝试寻找识别灰度化处理的代码 第四天:尝试编译运行灰度化处理代码 第五天:能够灰度化处理图片 第六天:搜索提高识别率的代码 第七 ...
- Practice1小学四则运算(改进)
#include<stdio.h> #include<stdlib.h> #include<time.h> void srand(unsigned);//随机生成不 ...
- TAC队--团队选题报告
The Art of Code--团队选题报告 一个APP项目能否被大众所接受,能否拥有受众,the most important是它的idea. 一个好的idea可以为项目带来巨大的改变 一个 独特 ...
- PAT 甲级 1029 Median
https://pintia.cn/problem-sets/994805342720868352/problems/994805466364755968 Given an increasing se ...
- 设置macbook休眠模式
前言: macbook默认合上盖默认是进入混合休眠模式模式(mode 3),此时电脑还会供电.不想耗电的话关机的话当前的工作状态就丢失了. macbook实际上是可以进入休眠模式的,只是没开放出来,我 ...
- XP局域网访问无权限、不能互相访问问题的完整解决方案
XP局域网访问无权限问题的完整解决方案: 1:用管理员账户登录系统 2:在“开始”-- “运行”里输入 GPEDIT.MSC 目的是打开组策略选项 3:依次展开”WINDOWS设置”-”本地策略”-” ...
- js手写俄罗斯方块
代码如下 html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...
- codeforces1A
Theatre Square CodeForces - 1A 一个城市的广场面积有 N×M平方米,过段时间,恰逢这个城市的庆典活动,主办方决定在广场上铺设一种新的地砖,这种地砖每块都是a×a平方米的. ...