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

CF竞赛题目讲解_CF256C(博弈论 + SG函数 + 分段打表)

2022-11-20 13:30 作者:Clayton_Zhou  | 我要投稿

AC代码

https://codeforces.com/contest/256/submission/180561282

题意:

Furlo和Rublo玩游戏。桌子上有n堆硬币,第i堆有ai硬币。Furlo和Rublo轮流移动,Furlo先移动。

在一次移动中,您可以:

1.选择一堆硬币,让我们将其中当前的硬币数量表示为x;

2.选择一些整数y(0 ≤ y < x;x^1/4≤ y ≤ x^1/2) 并将这堆硬币的数量减少到y。

换句话说,在所描述的移动之后,这堆硬币将剩下y个硬币。

无法移动的玩家会失败。

你的任务是找出,如果Furlo和Rublo都玩得很好,谁会在给定的游戏中获胜。


题解:

博弈论 + SG函数 + 分段打表


暴力的求SG函数会超时,正解是先处理出10^5以内的SG值,可以发现sg函数值成段出现.

根据sg函数值成段出现的特点,构造函数sg[lower_bound(a, a+6, i)-a]。

根据10^5以内的SG值,使用该函数,容易计算全部SG值(<=777777777777)

 


CF竞赛题目讲解_CF256C(博弈论 + SG函数 + 分段打表)的评论 (共 条)

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