欢迎光临散文网 会员登陆 & 注册

CF竞赛题目讲解_CF1704F(博弈 + ICG + SG函数)

2022-11-16 15:45 作者:Clayton_Zhou  | 我要投稿

AC代码

https://codeforces.com/contest/1704/submission/181166130

题意:

爱丽丝和鲍勃正在玩游戏。一行有n个单元格。最初,每个单元格都是红色或蓝色。爱丽丝先走。

每个回合,Alice选择两个相邻的单元格,其中至少包含一个红色单元格,并将这两个单元格涂成白色。

然后,Bob选择至少包含一个蓝色单元格的两个相邻单元格,并将这两个单元格涂成白色。不能移动的玩家会输。

如果Alice和Bob都发挥最佳,则找到赢家。

请注意,所选单元格可以是白色的,只要其他单元格满足约束条件。


题解:

博弈 + ICG + SG函数

“Impartial Combinatorial Games”(以下简称ICG)。满足以下条件:

1、有两名选手交替对游戏进行移动(move),每次一步,

选手可以在合法移动集合中任选一种进行移动;

2、对于游戏的任何一种可能的局面,合法的移动集合只取决于这个局面本身,

不取决于轮到哪名选手操作;

3、如果轮到某名选手移动,且这个局面的合法的移动集合为空,则这名选手负。

 


两边的策略显然是先抢对方的再碰自己的。如果取完BR或者RB,只剩单个R,B,

这时如果 R和B 数量不相等,数量大者胜。


如果取完BR或者RB,只剩单个R,B,这时如果 R和B 数量相等,

则变成ICG,可以引入 SG 函数来处理。这是本题的关键。

这时先取完BR或者RB者即是赢,因为剩下的单个R,B数量相等。


把形如 RBRBRB 或者RBRBR  的子区间提取出来,

那么当前局面的 SG 值就是它们的SG 值异或和。

注意RBRBR  的SG 值,与题目原来的定义不同,我们不考虑R和B 数量是否相等,

只考虑能取得BR或者RB的数量,故与是否为爱丽丝无关。

对于单个子区间RBRBR,RBRBRB 或者BRBRBR,先手输赢只和它的长度有关。


暴力打表发现,从53开始,有一个长度34的周期。


CF竞赛题目讲解_CF1704F(博弈 + ICG + SG函数)的评论 (共 条)

分享到微博请遵守国家法律