【一本通提高博弈论】[ZJOI2009]取石子游戏

ZJOI 2009 取石子游戏 博弈论 题目: 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排。游戏由两个人进行,两人轮流操作,每次操作者都可以从最左或最右的一堆中取出若干颗石子,可以将那一堆全部取掉,但不能不取,不能操作的人就输了。 Orez问:对于任意给出一个初始一个局面,是否存在先手必胜策略。 思路: 看到题毫无思路,难以找到获胜策略,看了 阅读详情

[ZJOI2009]取石子游戏

题目描述

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

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

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

输入格式

文件的第一行为一个整数 TTT,表示有 TTT 组测试数据。对于每组测试数据:

第一行为一个整数 nnn,表示有 nnn 堆石子。

第二行为 nnn 个整数 a1,a2,…,ana_1, a_2, \ldots , a_na1​,a2​,…,an​,依次表示每堆石子的数目。

输出格式

对于每组测试数据仅输出一个整数 000 或 111。其中 111 表示有先手必胜策略,000 表示没有。

输入输出样例

样例输入1
1
4
3 1 9 4
样例输出1
0

说明/提示

对于 30%30 \%30% 的数据,n≤5n \le 5n≤5,ai≤105a_i \le {10}^5ai​≤105。
对于 100%100 \%100% 的数据,1≤T≤101 \le T \le 101≤T≤10,1≤n≤10001 \le n \le 10001≤n≤1000,1≤ai≤1091 \le a_i \le {10}^91≤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");
	}
}
洛谷2599 【ZJOI2009】取石子游戏(博弈论+DP) 传送门 【题目分析】 这谁想得到要DP啊。。。。。ZJOI果然神题倍出。 参考了YYB的博客,传送门。(确实讲的很好!一看就懂!) 定义两个数组:和,L[i][j]表示在区间[i,j]左边放一堆数量为L[i][j]的石子,此时先手必败,R[i][j]表示在区间[i,j]右侧放一堆数量为R[i][j]的石子,此时先手必败。 如果存在两个或以上的L[i][j],那么显然左边的可以通过取任意个... 阅读详情

相关推荐

概率数据关联(PDA):多目标跟踪的基石算法

1. 为什么需要概率数据关联? 2. 核心思想与假设条件 3. 算法核心:概率分配与状态更新 4. 典型应用场景与优势 5. 挑战与改进方向 6. 下期预告

qq_44965657的博客 1465

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

Description 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排。游戏由两个人进行,两人轮流操作,每次操作者都可以从最左或最右的一堆中取出若干颗石子,可以将那一堆全部取掉,但不能不取,不能操作的人就输了。 Orez问:对于任意给出一个初始一个局面,是否存在先手必胜策略。 Input 文件的第一行为一个整数T,表示有...

weixin_30435261的博客 412

matlab 用m_map画地形水深图

clear,clc %投影 m_proj('albers equal-area','lat',[5 43],'long',[105 125],'rect','on'); %加载水深文件 [CS,CH]=m_etopo2('contourf',[-7000:500:3000],'edgecolor','none'); %绘制高分辨率陆地和海岸线 m_gshhs_h('patch',[0.1 0.9 ...

qq_44913577的博客 9513

[ZJOI2009]取石子游戏(Nim)

题目 传送门 题解 记得孔老师之前讲过类似的题,好像是贪心? 看到这道题就想乱搞; 奇偶性?a[i]的和的奇偶性? 与之前的Nim游戏不同的是,这次去石子只可以从两边取。 代码 总结...

A_Comme_Amour的博客 633

RK3576开发板ROS2部署实战:从Buildroot配置到Hello World Demo

本文详细介绍了在RK3576开发板上部署ROS2的完整实战流程。从Buildroot工程配置、集成ROS2依赖,到搭建Docker交叉编译环境、处理编译难题,最终完成系统镜像打包并在板端成功运行Talker-Listener Demo。该指南旨在帮助开发者深入理解嵌入式机器人系统的构建链,实现从底层到应用的完全掌控。

mac99的博客 1157

高德地图 搜索和点击定位

高德地图vue

weixin_45474673的博客 1943

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

【BZOJ1413】[ZJOI2009]取石子游戏(博弈论,动态规划) 题面 BZOJ 洛谷 题解 神仙题.jpg。\(ZJOI\)是真的神仙。 发现\(SG\)函数等东西完全找不到规律,无奈只能翻题解。 首先设\(L[i][j]\)表示在\([i,j]\)这一段区间的左侧放上一堆数量为\(L[i][j]\)的石子后,先手必败。同理定义\(R[i][j]\)表示右侧。 首先我们可以证明\(L[i]...

weixin_30394333的博客 205

.NET 8 组件之IOC容器组件

NET 8中的IOC容器组件继承了前几代的优良传统,并在性能、扩展性、灵活性等方面进行了诸多优化,使得它在现代应用开发中依然保持领先地位。通过合理使用IOC容器,开发者可以更高效地管理依赖关系,编写更加模块化、可维护的代码。随着.NET生态的不断发展,IOC容器将继续扮演关键角色,为开发者提供强大的依赖管理功能。

hy_4377的博客 1529

[ZJOI2009]取石子游戏

题面 题意 从左到右有几堆石子,双方轮流取石子,每次取时只能从最左边或者是最右边的堆中取任意个石子,不能操作的人算输,问先手有无必胜策略。 做法 首先定义dp状态: left[i][j]left[i][j]left[i][j]表示在第iii堆石子到第jjj堆石子左边放left[i][j]left[i][j]left[i][j]个石子后是必败态。 right[i][j]right[i][j]righ...

yzyyylx的博客 1783

[deprecated]第九章:SVM机制: 9-2 Linux HMM原理与实现详解

Linux内核HMM(异构内存管理)子系统为异构计算平台提供统一内存管理机制,支持CPU与GPU等设备共享虚拟地址空间,实现零拷贝数据访问。其核心功能包括:1)统一虚拟地址空间,设备可直接访问CPU进程内存;2)实时页表同步与失效通知,确保地址空间一致性;3)支持设备端page fault处理;4)管理多种内存类型(系统内存、设备私有内存等)。HMM通过mmu_interval_notifier机制感知地址空间变化,提供标准API简化驱动开发,显著提升异构计算性能和数据传输效率。

图形/计算GPU的驱动与虚拟化技术分享园地 2547

vue3:实现ECharts3D地图详细示例,echarts实现3D地图map3D,vue3如何利用echarts绘制3d地图立体城市省市地区分布,可视化数据大屏3D炫酷中国地图(复制源码,开箱即用)

echarts实现中国地图记录篇之3D地图,Echarts地图之——如何让地图显示出3d感,【3d地图】vue中使用echarts geo3D,echarts实现某个市3D地图展示,vue3中使用echarts实现中国地图,3D地图图表,echarts实现3D地图——map3D,数据大屏3d地图,vue3+echarts绘制中国地图,3D地图,省、市、县,【3d地图】vue3中使用echarts geo3D,echarts实现某个市3D地图展示,ECharts3D地图(详细示例——附有具体注释),echar

✅ 精选推荐文章 3671

BZOJ1413 [ZJOI2009]取石子游戏

[ZJOI2009]取石子游戏 思路: 博弈+dp,详见yyb博客 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include<bits/stdc++.h> using namespace std; #define y1 y11 #define fi first #d...

weixin_30872789的博客 837

Simulink仿真模块 - Data Type Conversion

Data Type Conversion将输入信号转换为指定的数据类型 在仿真库中的位置为: Simulink / 常用模块 Simulink / Signal Attributes 模型为: 说明 DataTypeConversion模块可将任何 Simulink®数据类型的输入信号转换为您指定的数据类型。 注意 要通过指定模块参数来控制输出数据类型,或者要从下游模块继承数据类型,使用DataTypeConversion模块。要...

jk_101的博客 2520

进阶数学算法-取石子游戏(ZJOI2009)

ZJOI 2009 取石子游戏

Ayanami_Rei的博客 893

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

取石子游戏三大题

取石子游戏三大题 ——————————————————————————————————————————————————————— 取石子游戏 题目描述 原题来自:ZJOI 2009 在研究过 Nim 游戏及各种变种之后,Orez 又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排。游戏由两个人进行,两人轮流操作,每次操作者都可以从 最左或...

Old flame.Scar 4624

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

第7章 博弈论(《信息学奥赛一本通 提高篇》第6部分 数学基础)

例1 取石子游戏 取石子游戏(hdu1527 博弈) - 寻找&星空の孩子 - 博客园 取石子游戏_whiterbear的专栏-优快云博客 【计蒜客习题】取石子游戏 - Mr^Kevin - 博客园 一本通1663【 例 1】取石子游戏 1 - 人间不值の - 博客园 1663:【 例 1】取石子游戏 1 信息学奥赛一本通(C++版)在线评测系统 一本通1663【 例 1】取石子游戏 1 - 人间不值の - 博客园 例2 取石子游戏 一本通提高篇在线提交地址_老象的专栏-

青少年趣味编程 4622

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

P2599 [ZJOI2009] 取石子游戏 题解

摘要:本文讨论了一种区间DP方法解决石子游戏问题。通过定义L[i][j]和R[i][j]数组表示必败条件,并进行了详细的存在性和唯一性证明。针对不同情况(x=r、x<r、x>r)给出了分类讨论的解决方案,最终通过动态规划实现了O(n^2)复杂度的判断算法。该方法适用于两人轮流从两端取石子的游戏,能有效判断先手必胜策略的存在性。

Hans_Jiang_jnrz的博客 855

bzoj 1413 //1413: [ZJOI2009]取石子游戏

bzoj 1413 //1413: [ZJOI2009]取石子游戏 //在线测评地址https://www.lydsy.com/JudgeOnline/problem.php?id=1413 更多题解,详见https://blog.youkuaiyun.com/mrcrack/article/details/90228694BZOJ刷题记录 //1413: [ZJOI2009]取石子游戏 //在线测评...

mrcrack的博客 300

省选+NOI 第九部分 博弈论

例1 取石子游戏 取石子游戏(hdu1527 博弈) - 寻找&星空の孩子 - 博客园 取石子游戏_whiterbear的专栏-优快云博客 【计蒜客习题】取石子游戏 - Mr^Kevin - 博客园 一本通1663【 例 1】取石子游戏 1 - 人间不值の - 博客园 1663:【 例 1】取石子游戏 1 信息学奥赛一本通(C++版)在线评测系统 一本通1663【 例 1】取石子游戏 1 - 人间不值の - 博客园 例2 取石子游戏 一本通提高篇在线提交地址_老象的专栏-优快云

青少年趣味编程 4342

NOI数学 6、博弈论(2025.01.08)

NOI数学 6、博弈论(2025.01.08)

青少年趣味编程 833

BZOJ 1413: [ZJOI2009]取石子游戏

Description 有\(n\)堆石子,将这\(n\)堆石子摆成一排。游戏由两个人进行,两人轮流操作,每次操作者都可以从最左或最右的一堆中取出若干颗石子,可以将那一堆全部取掉,但不能不取,不能操作的人就输了。 Solution 博弈+区间DP. 这道题好厉害啊qwq... 首先一个区间\([l,r]\)在左边或右边添加一个数是个\(P\)一定仅有一个。因为有另一个的话,从另...

aisen1985的博客 246

信奥中的数学:博弈论

第7章 博弈论(《信息学奥赛一本通 提高篇》第6部分 数学基础) 例1 取石子游戏 取石子游戏(hdu1527 博弈) - 寻找&星空の孩子 - 博客园 取石子游戏_whiterbear的专栏-优快云博客 【计蒜客习题】取石子游戏 - Mr^Kevin - 博客园 一本通1663【 例 1】取石子游戏 1 - 人间不值の - 博客园 1663:【 例 1】取石子游戏 1 信息学奥赛一本通(C++版)在线评测系统 一本通1663【 例 1】取石子游戏 1 - 人间不值の - 博客

青少年趣味编程 803

bzoj 1413 [ZJOI2009]取石子游戏 博弈论 dp

果然浙江出神题呀。。。首先有这么一个结论:对于一段区间的石子,在这段区间左侧放一堆石子(个数可以为0)有且仅有一个石子个数使得到的状态为先手必败态。1.因为如果有一种以上的个数,假设有x,y(x<y)x,y(x<y)两个数是先手必败态,那么可以从y转移到x。因此一定小于等于一种。 2.如果没有石子个数为先手必败态,那么每一个必胜态对应转移到的必败态一定是在右侧选一些石子,由于有无穷多个必胜态因此一

make_it_for_good的博客 1825

BZOJ1413: [ZJOI2009]取石子游戏

BZOJ1413: [ZJOI2009]取石子游戏 Description 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排。 游戏由两个人进行,两人轮流操作,每次操作者都可以从最左或最右的一堆中取出若干颗石子,可以将那一堆全部取掉,但不能不取,不能操作的人就输了。 Orez问:对于任意给出一个初始一个局面,是否...

weixin_30562507的博客 96
上一篇: 【一本通提高博弈论】巧克力棒
下一篇: P2512 【一本通提高篇贪心】「一本通 1.1 练习 6」[HAOI2008]糖果传递
lvshu · 绿树
博客等级 码龄7年 44粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lvshu · 绿树

非常感谢您的搭讪

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值