bzoj3895: 取石子(博弈论,记忆化搜索)
3895: 取石子
Time Limit: 1 Sec Memory Limit: 512 MB
Submit: 361 Solved: 177
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
3
1 1 2
2
3 4
3
2 3 5
Sample Output
NO
NO
HINT
思路:
本来想纯粹博弈论,结果发现最终有的情况数不确定,所以只能搜索一波
因为无论何时,只要每堆都有石子,合并的结果都一样
所以我们把每一堆石子都先取成1
然后剩下这么多堆为1的石子,,每次操作有两种选择,要么合并,要么取走这一堆
然后就结束了
维护选用记忆化搜索
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#define rii register int i
using namespace std;
int n,dp[][],t,x,l,r,bj[][];
int dplast(int l,int r)
{
if(l==)
{
return r&;
}
if(r==)
{
return dplast(l+,);
}
if(bj[l][r])
{
return dp[l][r];
bj[l][r]=;
}
if(l&&!dplast(l-,r))
{
return dp[l][r]=;
}
if(l&&r&&!dplast(l-,r+))
{
return dp[l][r]=;
}
if(l>=&&!dplast(l-,r++(r?:)))
{
return dp[l][r]=;
}
if(r&&!dplast(l,r-))
{
return dp[l][r]=;
}
return dp[l][r]=;
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
l=;
r=-;
for(rii=;i<=n;i++)
{
scanf("%d",&x);
if(x==)
{
l++;
}
else
{
r+=x+;
}
if(r==-)
{
r=;
}
}
if(dplast(l,r)==)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
}
bzoj3895: 取石子(博弈论,记忆化搜索)的更多相关文章
- 蓝桥杯 2014本科C++ B组 地宫取宝 DFS+记忆化搜索
历届试题 地宫取宝 时间限制:1.0s 内存限制:256.0MB 问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角 ...
- hdu 4753 Fishhead’s Little Game 博弈论+记忆化搜索
思路:状态最多有2^12,采用记忆化搜索!! 代码如下: #include<iostream> #include<stdio.h> #include<algorithm& ...
- poj 1085 Triangle War 博弈论+记忆化搜索
思路:总共有18条边,9个三角形. 极大极小化搜索+剪枝比较慢,所以用记忆化搜索!! 用state存放当前的加边后的状态,并判断是否构成三角形,找出最优解. 代码如下: #include<ios ...
- cf787c 博弈论+记忆化搜索
好题,单纯的就是pn状态的推导 /* 把第一个点标为0,剩下的点按1-n-1编号 胜态是1,败态为0,dp[i][j]表示第i个人,怪兽起始位置在j时的胜负态 把0点设置为必败态,然后对于一个人来说, ...
- 【BZOJ-3895】取石子 记忆化搜索 + 博弈
3895: 取石子 Time Limit: 1 Sec Memory Limit: 512 MBSubmit: 263 Solved: 127[Submit][Status][Discuss] D ...
- 【BZOJ3895】取石子(博弈,记忆化搜索)
题意: Alice和Bob两个好朋含友又开始玩取石子了.游戏开始时,有N堆石子排成一排,然后他们轮流操作(Alice先手),每次操作时从下面的规则中任选一个:1:从某堆石子中取走一个2:合并任意两堆石 ...
- BZOJ 3895 3895: 取石子 / Luogu SP9934 ALICE - Alice and Bob (博弈 记忆化搜索)
转自PoPoQQQ大佬博客 题目大意:给定n堆石子,两人轮流操作,每个人可以合并两堆石子或拿走一个石子,不能操作者输,问是否先手必胜 直接想很难搞,我们不妨来考虑一个特殊情况 假设每堆石子的数量都&g ...
- 蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索
问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...
- 【蓝桥杯真题】地宫取宝(搜索->记忆化搜索详解)
链接 [蓝桥杯][2014年第五届真题]地宫取宝 题目描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被 ...
随机推荐
- Log4Net 之初体验
今天试了一下关于日志的一个插件——Log4Net 关于这个插件就不过多描述了,有很多人用,也挺好用比较方便,所以在此记录下使用过程. 一.建一个mvc 空网站 名字叫 Log4NetTest 二.下载 ...
- css 小常识
一.vertical-align可以采用负值(正/负值根据基线上下移动),也可以采用百分比值,而这个百分比值不是相对于字体大小或者其他什么属性计算的,而是相对于line-height计算的. 此外,w ...
- 【转】JavaScript 中值得注意的 for 循环
在ECMAScript5(简称 ES5)中,有三种 for 循环,分别是: 简单for循环 for-in forEach 在2015年6月份发布的ECMAScript6(简称 ES6)中,新增了一种循 ...
- matlab练习程序(矩形变换为圆)
最近对图像坐标的变换很感兴趣啊,这次是将一张图像变换为圆形. 变换原理就是按变换前后像素到圆心的距离按比例缩减就行了. 改变x,y方向上的系数,应该还可以变换为椭圆,不过我还没有尝试. 注意我这里相当 ...
- MySQL命令行导入导出sql文件
linux下 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):1.导出数据和表结构(常用):mysqldump -u用户名 -p密码 数据库名 > 数据库名. ...
- js:正则表达式
<script type="text/javascript"> function SubmitCk() { var reg = /^([a-zA-Z0-9]+[_|\_ ...
- day012-Lambda、方法引用
1. 函数式接口 有且只有一个抽象方法的接口就是函数式接口. 函数式接口的定义格式: Interface 接口名{ 抽象方法: } @Override:用来修饰方法声明,告诉编译器该方法是重写父类的方 ...
- rac数据库默认sql tuning advisor,导致大量library cache lock
rac数据库默认sql tuning advisor,导致大量library cache lock 问题现象:客户反映周六周日固定十点钟,一个程序会特别慢(大概10分钟),平时1到2秒.查看当时的日志 ...
- 实验验证stack和heap中是否被设初值
#include <iostream> #include <stdlib.h> using namespace std; class Foo { public: int i; ...
- ACM-ICPC(10/23)
贪心 区间相关问题 选择不相交区间: hdu 2037 给定一些区间,选择尽量多的区间,他们互相不交叉.(活动安排问题) 分析:贪心思路是解决活动安排问题的好方案. 按照区间右端点排序,从前往后遍历, ...