Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 859  Solved: 356
[Submit][Status][Discuss]

Description

一个n*n(n>=2)棋盘上有黑白棋子各一枚。游戏者A和B轮流移动棋子,A先走。
l         A的移动规则:只能移动白棋子。可以往上下左右四个方向之一移动一格。
l         B的移动规则:只能移动黑棋子。可以往上下左右四个方向之一移动一格或者两格。
和通常的“吃子”规则一样,当某游戏者把自己的棋子移动到对方棋子所在的格子时,他就赢了。两个游戏者都很聪明,当可以获胜时会尽快获胜,只能输掉的时候会尽量拖延时间。你的任务是判断谁会赢,需要多少回合。
比如n=2,白棋子在(1,1),黑棋子在(2,2),那么虽然A有两种走法,第二个回合B总能取胜。

Input

输入仅一行,包含五个整数n, r1, c1, r2, c2,即棋盘大小和棋子位置。白色棋子在(r1,c1),黑色棋子在(r2,c2)(1<=r1,c1,r2,c2<=n)。黑白棋子的位置保证不相同。
 

Output

 
输出仅一行,即游戏结果。如果A获胜,输出WHITE x;如果B获胜,输出BLACK x;如果二者都没有必胜策略,输出DRAW。

Sample Input

2 1 1 2 2

Sample Output

BLACK 2

HINT

n<=20

题解:暴力DP即可;

f[i][j][k][l][m][n]:表示:第I位,第一,二,三个数用了i,j,k个,n表示是否有进位;

参考代码:

 #include<bits/stdc++.h>
using namespace std;
#define clr(a,b) memset(a,b,sizeof(a))
typedef long long ll;
const ll inf=0x3f3f3f3f3f3f3f3fll;
ll a,b,c;
ll la,lb,lc,len;
ll dp[][][][][];
void getlen(){len=max(log2(a)+,max(log2(b)+,log2(c)+));}
ll getnum(ll x)
{
ll sum=;
for(int i=;i<;++i) {if( x & (1ll<<i) ) sum++; }
return sum;
}
void work()
{
dp[][][][][]=;
for(ll i=;i<len;++i)
{
for(ll j=;j<=la;++j)
{
for(ll k=;k<=lb;++k)
{
for(ll l=;l<=lc;++l)
{
long long tmp=dp[i][j][k][l][];//枚举最后一位不进位的情况
dp[i+][j+][k+][l+][]=min(dp[i+][j+][k+][l+][],tmp+(<<i+));
dp[i+][j+][k][l+][]=min(dp[i+][j+][k][l+][],tmp+(<<i));
dp[i+][j][k+][l+][]=min(dp[i+][j][k+][l+][],tmp+(<<i));
dp[i+][j][k][l][]=min(dp[i+][j][k][l][],tmp);
tmp=dp[i][j][k][l][];//枚举最后一位进位的情况
dp[i+][j+][k+][l+][]=min(dp[i+][j+][k+][l+][],tmp+(<<i+));
dp[i+][j][k+][l][]=min(dp[i+][j][k+][l][],tmp+(<<i));
dp[i+][j+][k][l][]=min(dp[i+][j+][k][l][],tmp+(<<i));
dp[i+][j][k][l][]=min(dp[i+][j][k][l][],tmp);
}
}
}
}
//cout<<len<<" "<<la<<" "<<lb<<" "<<lc<<endl;
if(dp[len][la][lb][lc][]>=inf) printf("-1\n");
else printf("%d\n",dp[len][la][lb][lc][]);
} int main()
{
scanf("%lld%lld%lld",&a,&b,&c);
getlen(); memset(dp,inf,sizeof dp);
la=getnum(a);lb=getnum(b);lc=getnum(c);
work();
return ;
}

BZOJ 3106: [cqoi2013]棋盘游戏的更多相关文章

  1. BZOJ 3106: [cqoi2013]棋盘游戏(对抗搜索)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3106 对抗搜索,f[x][y][a][b][c][d]表示当前谁走,走了几步,及位置. (因为 ...

  2. 【BZOJ 3106】 3106: [cqoi2013]棋盘游戏 (对抗搜索)

    3106: [cqoi2013]棋盘游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 544  Solved: 233 Description 一个 ...

  3. 3106: [cqoi2013]棋盘游戏

    3106: [cqoi2013]棋盘游戏 链接 分析: 极大极小搜索 + 记忆化. 代码 #include<bits/stdc++.h> using namespace std; type ...

  4. BZOJ 3106 棋盘游戏

    Description 一个\(n \times n(n \le 2)\)棋盘上有黑白棋子各一枚.游戏者A和B轮流移动棋子,A先走. A的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. ...

  5. bzoj千题计划200:bzoj3106: [cqoi2013]棋盘游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=3106 白棋如果第一步不能赢,那么一定输 因为可以黑棋走的距离比白棋大,黑棋可以下一步吃掉白棋,也可以 ...

  6. bzoj 3105: [cqoi2013]新Nim游戏 异或高消 && 拟阵

    3105: [cqoi2013]新Nim游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 535  Solved: 317[Submit][Stat ...

  7. BZOJ 3108: [cqoi2013]图的逆变换

    3108: [cqoi2013]图的逆变换 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 627  Solved: 415[Submit][Statu ...

  8. BZOJ 3107 [cqoi2013]二进制a+b (DP)

    3107: [cqoi2013]二进制a+b Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 995  Solved: 444[Submit][Stat ...

  9. BZOJ 3105 [CQOI2013]新Nim游戏 ——线性基

    [题目分析] 神奇的题目,两人都可以第一次取走足够多堆的石子. nim游戏的规则是,如果异或和为0,那么就先手必输,否则先手有必胜策略. 所以只需要剩下一群异或和为0就可以了. 先排序,线性基扫一遍即 ...

随机推荐

  1. vue的相关知识

    一.DOM vs 函数库 vs框架 DOM:  API繁琐 函数库:JQuery对DOM的每个步骤的API进行一对一的简化,但并没有改变DOM做事的步骤和方法. 框架:一个包含部分已经实现的功能的半成 ...

  2. Apache Jmeter进行服务器压力测试

    1.前言 最近项目遇到一个问题:其他公司对接我们系统,请求量太大的时候,返回单给对方就是丢失格式,大概十几万中总有那么十几单会出现格式错误! 所以我们老大就叫我用apache jmeter来进行并发测 ...

  3. 【algo&ds】0.数据结构和算法入门

    解决问题方法的效率,跟数据的组织方式有关 解决问题方法的效率,跟空间的利用效率有关 解决问题方法的效率,跟算法的巧妙程度有关 什么是数据结构 数据对象在计算机中的组织方式 逻辑结构 物理存储结构 数据 ...

  4. 一、netcore跨平台之 Linux上部署netcore和webapi

    这几天闲着的时候在linux上部署了一下netcore webapi,下面就纪要一下这个过程. 中间遇到不少的坑,心里都是泪啊. 话不多说,开始干活. ------------------------ ...

  5. vue开发之跨域请求,请求头not allowed by Access-Control-Allow-Headers,后端cookie session值取不到(二)

    原因:你本地的请求ajax的get和post请求:如果你的请求头内放一些可用验证数据Token的时候就会存在跨域请求这是浏览器所不允许的问题: 方案一:后台的接口请求模式都写成jsonp请求,前端去调 ...

  6. Salesforce学习之路(十一)Aura组件属性<aura:attribute />

    1. <aura:attribute />语法 Aura组件属性类似与Apex中类的成员变量(或者说Java中类的成员变量).他们是组件在特定的实例上设置的类型化字段,可以使用表达式语法从 ...

  7. 并发编程-硬件加持的CAS操作够快么?

    Talk is cheap CAS(Compare And Swap),即比较并交换.是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数--内存位置(V).预期原值(A)和新 ...

  8. C# XML解析之DOM模型

    DOM的工作方式是:首先将XML文档一次性的装入内存,然后根据文档中定义的元素和属性在内存中创建一个“树型结构”也就是一个文档对象模型,这里的含义其实是把文档对象化,文档中每个节点对应着模型中一个对象 ...

  9. 护网杯2019 mergeheap --pwn

    护网 又是签到 一天 这道题一开始 不懂得如何泄露 libc 信息,就蒙了  后来群里师傅也是刚刚好 做出 到这里 我就接着做了 . 先看下保护,发现  全开了 然后 就看下流程 大概 就是添加  c ...

  10. 百度杯 十一月 的一道pwn题复现

    拿到题后,就直接开鲁.. /ctf/pwn# checksec pwnme [*] '/ctf/pwn/pwnme' Arch: amd64--little RELRO: Full RELRO Sta ...