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

洛谷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],那么显然左边的可以通过取任意个... 阅读详情

果然浙江出神题呀。。。

首先有这么一个结论:对于一段区间的石子,在这段区间左侧放一堆石子(个数可以为0)有且仅有一个石子个数使得到的状态为先手必败态。

1.因为如果有一种以上的个数,假设有x,y(x<y)两个数是先手必败态,那么可以从y转移到x。因此一定小于等于一种。
2.如果没有石子个数为先手必败态,那么每一个必胜态对应转移到的必败态一定是在右侧选一些石子,由于有无穷多个必胜态因此一定有一种在右侧选石子的方案对应两个以上必胜态,那么这种方案选完后对应两个以上必败态,与1矛盾。
因此有且仅有一种石子个数使得到的状态为先手必败态(在右边放同理)。

然后设l[i][j]表示在区间[i,j]左边放的石子个数,r[i][j]表示在右边放的石子个数。

考虑计算l[i][j] 的情况(r[i][j] 同理)。
设x=l[i][j−1],y=r[i][j−1]
1.特殊情况y=a[j] : l[i][j]=0
2.x>a[j]&&y>a[j] : l[i][j]=a[j] 先手选一次,后手在另一边选一次与其相等。那么先手一定先取完一侧。
3.x<=a[j]&&y>a[j] : l[i][j]=a[j]+1 当a[i]=x时直接取完a[j]。当a[i]>x时保证a[i]=a[j]+1,当a[i]<x时保证a[i]=a[j]
4.x>a[j]&&y<a[j] : l[i][j]=a[j]−1 与3同理
5.x<a[j]&&y<a[j] : l[i][j]=a[j] 设x<y(x>y时同理) 当a[i]=x时取完a[j],当a[j]=y时取完a[i]。当a[i]>x&&a[j]>y时保证a[i]=a[j]
当x<a[i]<=y或x<=a[j]<y时转到3

#include <bits/stdc++.h>
using namespace std;
#define N 1100
int T,n;
int a[N],l[N][N],r[N][N];
int main()
{
    ///freopen("tt.in","r",stdin);
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        if(n==1){puts("1");continue;}
        for(int i=1;i<=n;i++)
            l[i][i]=r[i][i]=a[i];
        for(int i=1;i<=n;i++)
            for(int j=1;j+i<=n;j++)
            {
                int x=l[j][j+i-1],y=r[j][j+i-1],z=a[j+i];
                if(y==z)l[j][j+i]=0;
                else if(x>z&&y>z)l[j][j+i]=z;
                else if(x<=z&&y>z)l[j][j+i]=z+1;
                else if(x>z&&y<z)l[j][j+i]=z-1;
                else l[j][j+i]=z;

                x=r[j+1][j+i],y=l[j+1][j+i],z=a[j];
                if(y==z)r[j][j+i]=0;
                else if(x>z&&y>z)r[j][j+i]=z;
                else if(x<=z&&y>z)r[j][j+i]=z+1;
                else if(x>z&&y<z)r[j][j+i]=z-1;
                else r[j][j+i]=z;
            }
        puts(l[2][n]==a[1] ? "0":"1");
    }
    return 0;
}
取石子游戏——算法与编程 取石子游戏: 堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。这种情况最有意思,它与二进制有密切关系,我们用。个,两人轮流取石子,每次只能从一堆中取,而且每堆石子都有各自的限制,就是第i堆石子每次只能取。计算机算法里面有一种叫做按位模 2 加,也叫做异或的运算,我们用符号。显然是奇异局势,无论谁面对奇异局势,都必然失败。也是奇异局势,(我先拿之后,)无论对手如何拿,接下来都可以变为。,只要与对手拿走一样多的物品,最后都将导致。,要如何变为奇异局势呢? 阅读详情

相关推荐

《点亮创新灯塔!AI应用架构师与中小学初等教育AI智能体,共筑智能化教育辅助创新灯塔》

中小学AI智能体,是基于AI技术,能感知教育场景、理解教育规律、辅助教师教学和学生学习的智能系统。做老师“做不了”的事:比如5分钟批改45本作业,精准统计每个学生的易错点;做老师“做不好”的事:比如根据学生的学习风格(视觉/听觉/动觉)推荐个性化内容;绝不做老师“该做的事”:比如情感交流、价值观引导、创意教学设计——这些“人的温度”,AI永远无法替代。我是林宇,资深AI应用架构师,专注教育AI领域8年,参与过10多个中小学AI智能体项目,曾为北京、上海、深圳等城市的100多所学校提供AI教育解决方案。

Java大师兄的博客 433

【动态规划】博弈论:取石子游戏合集

博弈论

_ 2348

利用ArcGIS快速生成等高线边界,完成地形图拼图

地形图边界一般在CAD中手动绘制,然而,一幅边缘复杂的地形图边界的绘制需要花费大量时间和精力,为了减少重复性工作,提高效率,用ArcGIS软件可以自动生成实测地形图的边界

yl14774636230的博客 9068

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

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

绿树公司的博客 486

手把手教你ensp仿真搭建校园网(含防火墙及无线网络)系列(一)校园网核心交换机配置

本系列博客将带你从零开始,使用 华为 eNSP(Enterprise Network Simulation Platform) 仿真搭建一个完整的校园网络,涵盖 核心层、汇聚层、接入层、防火墙安全策略、无线AC+AP组网 等实战场景。无论你是网络初学者还是希望深化实战经验的工程师,都能通过本教程掌握企业级网络的规划、配置与排错技巧。

echo的博客 3797

Day 01: 与Python的第一次亲密接触

环境搭建 、第一个程序 Hello, World!、以及Python之禅 (The Zen of Python) 的解读。

杨小扩的博客 220

博弈论——取石子问题

博弈论——取石子问题 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。 (一)巴什博奕(Bash Game): 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜

weixin_43412878的博客 3855

SAP 基于生产订单行项目外部加工创建采购申请时的一个增强需求

摘要 本文介绍在SAP系统中实现生产订单外协工序自动生成采购申请(PR)时,将指定文本写入PR抬头文本的技术方案。关键点包括: 业务背景:通过CO02事务码将工序标记为外部加工,系统自动生成PR,需在生成时自动写入抬头文本。 技术难点: PR抬头文本存储在STXH/STXL而非EBAN表 标准增强点ME_PROCESS_REQ_CUST在外协场景可能不触发 推荐方案: 使用BAdI ME_REQ_POSTED,在PR过账时点执行 通过Text Object EBANH和Text ID(如B01)写入文本 实

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 623

【分割问题】-取石子游戏

DFS

weixin_60869516的博客 1219

18|AI 辅助精准测试:让平台会解释、会总结、会推荐

本文介绍 AI 在精准测试平台中的落地方式,包括变更摘要、风险解释、补测建议和报告总结。测试开发工程师。Java 后端开发工程师。质量平台 / DevOps 平台建设者。想了解精准测试落地方法的技术负责人。从报告中提取变更文件、未覆盖行、推荐用例。拼成结构化 JSON。让 AI 生成 200 字质量摘要。把摘要展示在报告顶部。读完本文后,可以复制下面的 Prompt,让 AI 生成一个报告总结练习。你是一名 AI 应用开发专家和测试架构师。

专注 AI 精准测试平台实战落地,分享从代码 Diff 到回归决策的完整工程闭环。主张“先建数据链路,再上 AI 智能”,让测试从“靠经验”走向“基于风险”。 55

YOLOv11涨点改进 | 首发全网创新、主干改进篇 | AAAI 2026 | PartialNet 主干让 YOLOv11 更加强大!引入部分通道机制 和 部分注意力卷积,全方面提升了模型的性能

本文提出PartialNet主干网络改进YOLOv11的方法,通过部分通道机制(PCM)和部分注意力卷积(PATConv)提升模型效率。PartialNet将特征图通道拆分并应用不同操作,显著减少计算量和内存占用。主要创新包括:1)部分通道机制实现计算优化;2)三种注意力模块(PATch/PATsp/PATsf)增强特征提取;3)动态部分卷积(DPConv)自适应调整计算复杂度。文章详细提供了代码实现和YOLOv11集成方法。

Ai缝合怪、助力小伙伴高效发论文 268

BZOJ 1413 [ZJOI2009] [洛谷2599] 取石子游戏 (博弈论 dp )

这个题数据有点水,有个奇葩程序可以过。。。(也不知道为什么。。。) 首先,讲个性质,取石子时,当先手使得左右两边的石子相等时,可以保证先手必胜,因为当先手取到左右石子相等的局面时,则后手无论在哪一堆取石子,接下来先手都可以有相同的方法取另一堆石子,这样又回到了原来的状态(左右石子相等),则无论如何先手都有办法应对后手的取法。 设在区间[i, j]左边放left[i][j](可以为0)个石子后(区间内石子保持原状),产生的局面为先手必败局面(这是重点),right[i][j]就是在右边放(定义类似);设a[

wzw-yali的博客 1691

SAP 中配置权限职责菜单并分配给用户的核心流程是:用PFCG 创建 / 维护角色(含菜单、事务码、权限)→ 生成权限参数文件 → 通过 SU01/SU10 将角色分配给用户

SAP权限配置核心流程:1)通过PFCG创建角色,配置菜单事务码及权限对象;2)生成权限参数文件;3)用SU01/SU10分配角色给用户。关键步骤包括:在PFCG中维护菜单结构、设置权限字段值、生成Profile,通过用户比较验证权限。批量分配可用SU10,特殊需求可创建复合角色或自定义权限对象。常见问题需检查权限缺失(SU53)、菜单分配及组织级别设置。流程简化为:创建角色→配置权限→分配用户→验证生效。

金牌架构师 1273

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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

BZOJ 1413: [ZJOI2009]取石子游戏

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

aisen1985的博客 246

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

省选+NOI 第九部分 博弈论

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

青少年趣味编程 4342

BZOJ 1413: [ZJOI2009]取石子游戏 博弈+Dp

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

dilu0653的博客 206

bzoj 1413: [ZJOI2009]取石子游戏(博弈+DP)

1413: [ZJOI2009]取石子游戏 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 711  Solved: 470 [Submit][Status][Discuss] Description 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排。游戏由两

加载中... 1352

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

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

青少年趣味编程 4622

信奥中的数学:博弈论

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

青少年趣味编程 803

[除草]BZOJ 1413 [ZJOI2009]取石子游戏

题目大意: 从左到右N堆石子, 每对石子数为a[i]. 两方轮流操作, 一次操作可以从最左边或最右边的石子堆取任意数量石子, 但不能不取, 不能操作的输. 问先手是否有必胜策略. (N不超过1000) 简要分析: 好囧的博弈题...现在我的脑袋里还是一团乱麻... 在尝试SG函数, 区间DP无果后, 在Discuss的诱导下注意到对于一段区间[L, R], 若L+1到R的石子数固定,...

weixin_30251829的博客 165

1218:取石子游戏(swap)

【题目描述】 有两堆石子,两个人轮流去取。每次取的时候,只能从较多的那堆石子里取,并且取的数目必须是较少的那堆石子数目的整数倍,最后谁能够把一堆石子取空谁就算赢。 比如初始的时候两堆石子的数目是25和7。 25 7 --> 11 7 --> 4 7 --> 4 3 --> 1 3 --> 1 0 选手1取 选手2取 选手1取 选手2取 选手1取 最后选手1(先...

weixin_45988242的博客 1088

博弈论——《取石子》《取石子游戏》

定义一个二元状态f(a,b),a表示当前个数为1的石子堆的数量,b表示个数不为1的所有石子堆的个数加上石子的堆d数减1的值。定义终局局面:只有一堆并且石子的个数是奇数,这样子到最后先手留给后手的是一个偶数石子个数局面,此时后手必败。只要石子数+石子的堆d数-1==b是奇数,那么先手必胜。5.合并a中的1个和b中的一个,变成f(a-1,b+1)4.合并a中的2个,变成f(a-2,b+3)3.合并b中的2个,变成f(a,b-1)2.从b中取一个,变成f(a,b-1)结论:在所有堆的石子个数>1的情况下。

测试 1796

【洛谷】P2252 取石子游戏|【模板】威佐夫博弈(配数学证明)

有两堆石子,数量任意,可以不同。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;现在给出初始的两堆石子的数目,你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。所以证明了通项公式中的项之间不能互相到达,并且之外的项必然可以一步到达公式中的某一项,从而公式中的状态都是奇异态。下面证明, 通项公式的两个不同状态之间不能一步到达。是否成立即可,如果成立,则先手必败,否则必胜。个石子,此时得到了另一个奇异态,从而。的奇异态中未出现的最小正整数,且。结论是,奇异态的通项公式为。

数学、算法爱好者的博客 671

取石子总结(博弈)

取石子(一) 有一堆石子共有n个,A和B轮流取,A先,每次最少取1个,最多取m个,先取完者胜,A,B足够聪明,问谁先胜? 比较简单的巴什博弈,若n%(m+1)!=0,A胜,否则B胜。 题解: 如果 n=m+1,那么由于一次最多只能取 m 个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。只要保持给对手留下(m+1)的倍数,就能最后获胜 #include &lt;...

月殇 6420

取石子游戏的各种解法

取石子游戏属于博弈论的题目,一下摘抄了一些人的解法 小红是个游戏迷,他和小蓝一起玩拿石子游戏。游戏规则为2个人轮流拿石子。一次可以拿1颗或3颗,规定谁取到最后一颗石子谁就胜出。最后决定由小红先取。两人都是游戏高手,该赢的绝不会输。问在知道石子总数的情况下,怎样快速预测谁将会胜出。   分析:   小红和小蓝各取一次共有三种情况:   ①共取走2颗石子

追逐繁星 4326
上一篇: bzoj 1296 [SCOI2009]粉刷匠 dp
下一篇: bzoj 1415 [Noi2005]聪聪和可可 概率dp
make_it_for_good
博客等级 码龄11年 13粉丝 183原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值