[ZJOI2009]取石子游戏

题目描述

在研究过 Nim 游戏及各种变种之后,Orez 又发现了一种全新的取石子游戏,这个游戏是这样的:

n

n

n 堆石子,将这

n

n

n 堆石子摆成一排。游戏由两个人进行,两人轮流操作,每次操作者都可以从最左或最右的一堆中取出若干颗石子,可以将那一堆全部取掉,但不能不取,不能操作的人就输了。

Orez 问:对于任意给出一个初始一个局面,是否存在先手必胜策略。

输入格式

文件的第一行为一个整数

T

T

T,表示有

T

T

T 组测试数据。对于每组测试数据:

第一行为一个整数

n

n

n,表示有

n

n

n 堆石子。

第二行为

n

n

n 个整数

a

1

,

a

2

,

,

a

n

a_1, a_2, \ldots , a_n

a1​,a2​,…,an​,依次表示每堆石子的数目。

输出格式

对于每组测试数据仅输出一个整数

0

0

0 或

1

1

1。其中

1

1

1 表示有先手必胜策略,

0

0

0 表示没有。

输入输出样例

样例输入1

1
4
3 1 9 4

样例输出1

0

说明/提示

对于

30

%

30 \%

30% 的数据,

n

5

n \le 5

n≤5,

a

i

10

5

a_i \le {10}^5

ai​≤105。
对于

100

%

100 \%

100% 的数据,

1

T

10

1 \le T \le 10

1≤T≤10,

1

n

1000

1 \le n \le 1000

1≤n≤1000,

1

a

i

10

9

1 \le a_i \le {10}^9

1≤ai​≤109。

Code

#include <bits/stdc++.h>
using namespace std;
int T;
int n, a[1005], l[1005][1005], r[1005][1005];
int main()
{
cin >> T;
while (T--)
{
cin >> n;
for (int i = 1; i <= n; ++i)
{
cin >> a[i];
}
for (int i = 1; i <= n; ++i)
{
l[i][i] = r[i][i] = a[i];
}
for (int len = 2; len <= n; ++len)
{
for (int i = 1, j = i + len - 1; j <= n; ++i, ++j)
{
int L = l[i][j - 1], R = r[i][j - 1], x = a[j];
if (x == R)
l[i][j] = 0;
if (x < L && x < R)
l[i][j] = x;
if (R < x && x < L)
l[i][j] = x - 1;
if (L < x && x < R)
l[i][j] = x + 1;
if (x > L && x > R)
l[i][j] = x;
L = l[i + 1][j], R = r[i + 1][j], x = a[i];
if (x == R)
r[i][j] = 0;
if (x < L && x < R)
r[i][j] = x;
if (R < x && x < L)
r[i][j] = x + 1;
if (L < x && x < R)
r[i][j] = x - 1;
if (x > L && x > R)
r[i][j] = x;
}
}
if (l[2][n] == a[1])
puts("0");
else
puts("1");
}
}

【一本通提高博弈论】[ZJOI2009]取石子游戏的更多相关文章

  1. BZOJ1874 「一本通 6.7 练习 1」【一本通提高博弈论】取石子游戏

    「一本通 6.7 练习 1」取石子游戏 题目描述 小H和小Z正在玩一个取石子游戏. 取石子游戏的规则是这样的,每个人每次可以从一堆石子中取出若干个石子,每次取石子的个数有限制,谁不能取石子时就会输掉游 ...

  2. 【BZOJ1413】[ZJOI2009]取石子游戏(博弈论,动态规划)

    [BZOJ1413][ZJOI2009]取石子游戏(博弈论,动态规划) 题面 BZOJ 洛谷 题解 神仙题.jpg.\(ZJOI\)是真的神仙. 发现\(SG\)函数等东西完全找不到规律,无奈只能翻题 ...

  3. bzoj 1413 [ZJOI2009]取石子游戏

    1413: [ZJOI2009]取石子游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 747  Solved: 490[Submit][Statu ...

  4. bzoj1413 [ZJOI2009]取石子游戏

    Description 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排.游戏由两个人进行,两人轮流操作,每次操作者都可以从 ...

  5. vijos 1557:bzoj:1413: [ZJOI2009]取石子游戏

    Description 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排.游戏由两个人进行,两人轮流操作,每次操作者都可以从 ...

  6. 【刷题】BZOJ 1413 [ZJOI2009]取石子游戏

    Description 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排.游戏由两个人进行,两人轮流操作,每次操作者都可以从 ...

  7. P2599 [ZJOI2009]取石子游戏 做题感想

    题目链接 前言 发现自己三岁时的题目都不会做. 我发现我真的是菜得真实. 正文 神仙构造,分讨题. 不敢说有构造,但是分讨我只服这道题. 看上去像是一个类似 \(Nim\) 游戏的变种,经过不断猜测结 ...

  8. [ZJOI2009]取石子游戏

    瞪了题解两三天,直接下转第二篇题解就康懂了 首先我们令 : \(L[i][j]\) 表示当前 \([i,j]\) 区间左侧放置 \(L[i,j]\) 数量的石子后先手必败 \(R[i][j]\) 表示 ...

  9. 洛谷P2599||bzoj1413 [ZJOI2009]取石子游戏

    bzoj1413 洛谷P2599 根本不会啊... 看题解吧 #include<cstdio> #include<algorithm> #include<cstring& ...

随机推荐

  1. 团队Arpha1

    队名:观光队 组长博客 作业博客 组员实践情况 王耀鑫 **过去两天完成了哪些任务 ** 文字/口头描述 完成服务器连接数据库部分代码 展示GitHub当日代码/文档签入记录 接下来的计划 与服务器连 ...

  2. 论文解读《Measuring and Relieving the Over-smoothing Problem for Graph NeuralNetworks from the Topological View》

    论文信息 论文标题:Measuring and Relieving the Over-smoothing Problem for Graph NeuralNetworks from the Topol ...

  3. Linux 服务器的性能参数指标总结

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运 ...

  4. 就是要让你搞懂Nginx,这篇就够了!

    开源Linux 长按二维码加关注~ 作者:渐暖° 出处:blog.csdn.net/yujing1314/article/details/107000737 来源:公众号51CTO技术栈 Nginx ...

  5. 【总结】2022GDOI普及组 没得游记

    因为是线上,所以没得游记 Day -3 学校安排去7班上课,好耶! 上午全是主科,有一节生物 被你七班捧上天了 被你七班造谣说我暴踩Everyone,还传到九班,给我玩阴的是吧 下午模拟赛,初一第一 ...

  6. Java遇上SPL:架构优势和开发效率,一个不放过

    摘要:如果我们在Java中也提供有一套完整的结构化数据处理和计算类库,那这个问题就能得到解决:即享受到架构的优势,又不致于降低开发效率. 本文分享自华为云社区<Java结构化处理SPL>, ...

  7. VS.NET启动显示ID为XXXX的进程当前未运行

    解决办法:在启动项目根目录下用文本编辑器打开Web项目下的{X}.csproj文件,然后查找 <WebProjectProperties>,将这一对标签之间的内容全部删除,然后再打开项目就 ...

  8. Java_选择结构

    if单选择结构 if(布拉尔表达式){ //如果布拉尔表达式为true将执行的语句 } if双选择结构 if(布拉尔表达式){ //如果布拉尔表达式的值为true }else{ //如果布拉尔表达式的 ...

  9. fiddler的安装以及使用同时对Android 与IOS 抓包配置进行分析 进阶 一

    由于工作方向的原因,很久没有用过APP抓包工具了,有那么一天遇到了bug需要协助开发工程师进行定位分析,然后又重新梳理了一下之前常用的抓包工具,这里重点介绍一下目前市面上最流行的几款抓包工具,根据自己 ...

  10. [自制操作系统] 第04回 完善MBR

    目录 一.前景回顾 二.改写MBR 三.实现loader 一.前景回顾 在之前我们说到,MBR的作用便是加载操作系统内核到指定位置.而MBR需要通过读取硬盘来获得操作系统内核.在上一回我们已经讲解了硬 ...