打表:威佐夫博弈与 k 倍动态减法_随笔
JueFan 一只绝帆

打表:威佐夫博弈与 k 倍动态减法

威佐夫博弈

两堆石子,每次可以取 (x,y)(x,y),你需要保证 x+y1x+y\ge 1 并且 x:y=(1:1)/(1:0)/(0:1)x:y=(1:1)/(1:0)/(0:1)

在二维平面上打出必胜必败表,使用直角坐标系的上下左右观念。

由于每个点从下、左、左下转移而来,反演之后可得若一个点是必败,则上、右、右上都是必胜。

从下往上考虑,显然每行下面的部分只能排除掉有限格,所以该行必定有必败态,也就是说每行恰有一个必败态。

考虑对必败 pair 进行打表,该数列是 (0,0),(1,2),(3,5),(4,7),(6,10),(8,13),(9,15),(0,0),(1,2),(3,5),(4,7),(6,10),(8,13),(9,15),\cdots

上、右保证了这个数列中不会出现相同的数,右上保证了差是互异的,由于第一个数是递增的,差也是递增的,所以令第 ii 个对的差是 ii,第二个数不会冲突。

看上去两项和对编号之间都是渐进意义上的倍数关系,设第 ii 个对的首元素是 αi\alpha i,第二个元素是 (α+1)i(\alpha+1)i

考虑列方程,设所有的次元素中有 ttαi\le \alpha i 的,再加上前面所有的首元素,则 t+i=αit+i=\alpha i,又因为 (α+1)t=αi(\alpha+1)t=\alpha i,可以解得 α=512\alpha=\frac{\sqrt 5-1}{2},验证了前几项发现答案就是 αi\lfloor\alpha i\rfloor,那越到后面肯定误差越小,所以这个就是答案。

另一种暴力刻画的方式是,每次我们把 \le 最后一个次元素的未出现的元素们拿出来,它们肯定是主元素,这个段数是 logn\log n 的,

扩展:HDU6869 Slime and Stones

新增可选项:xyk|x-y|\le k

这个扩展是简单的,上、右、右上大宽条。

每行仍有一个,只不过差每次排除了 k+1k+1 个。

简单的打表也可以得到,设第 ii 个对的首元素是 αi\alpha i,则次元素是 (α+k+1)i(\alpha+k+1)i

列方程,设所有的次元素中有 ttαi\le \alpha i 的,再加上前面所有的首元素,则 t+i=αit+i=\alpha i,又因为 (α+k+1)t=αi(\alpha+k+1)t=\alpha i,可以解得 α=1k+k2+2k+52\alpha=\frac{1-k+\sqrt{k^2+2k+5}}{2}

扩展2

新增可选项:x:y=(p:1)/(1:p),pN+x:y=(p:1)/(1:p),p\in\mathbb N^+,即每次排除掉所有的倍数点。

显然每行仍恰有一个,剩的不会推了。

k 倍动态减法 UVA1567

一堆石子,第一个人限制取 q\le q 个,此后每个人限制取 km\le km 个,mm 是上一个人取的数量,问是否先手必胜。

n108,k105n\le 10^8,k\le10^5

我们敏锐地注意到,本题的状态是 i,ji,j 表示剩 ii 个石子时能取 j\le j 个。

显然 jj 这一维有单调性,所以我们研究的东西进一步简化为 fif_i 表示最小的 jj 使得先手必胜。

手玩 k=1k=1 的情况,发现是 fi=lowbit(i)f_i=\text{lowbit}(i),仔细想想就会证了,若先手能取到 lowbit\text{lowbit},则后手一定取不到,而如果先手取不到则后手一定能取到。

我们窥见一个 ff 的转移式:fi=minj,fnj>kjjf_i=\min_{j,f_{n-j}>kj}j,也就是它取完后手取不到。

对其打表,我们用 iifii\to i-f_i,对每个 ii 求出这条链,将其从左往右写出来。

例如 k=2k=2 时是:1,2,3,3+1,5,5+1,5+2,81,2,3,3+1,5,5+1,5+2,8

我们发现,构造第 ii 个数列的方式,就是数列 i1i-1 后面加上 11,然后从后往前合并满足 aikai+1a_i\le ka_{i+1} 的人。

对其类似 k=1k=1 的手玩,发现 lowbit\text{lowbit} 的位置就是这个新进制下的 lowbit\text{lowbit}

何以证明?若先手能取到 lowbit\rm lowbit,则由于 ai>kai+1a_i>ka_{i+1},后手取不到 lowbit\rm lowbit,而若先手取不到 lowbit\rm lowbit,势必要拆掉最后一个位置,而 ff 的定义式天然满足了拆掉之后前面没被拆掉的很大的 ff 仍然会卡住,也就是说这个链结构只有最后一项分裂成小项了。

所以后手一定能取到新的 lowbit\rm lowbit

这个数列增长的不快,但数列中的“基本数”(k=1k=12t2^tk=2k=2 是斐波那契数列)是通过 ai=ai1+minj,kajai1aja_i=a_{i-1}+\min_{j,ka_j\ge a_{i-1}}a_j 构造出来的,显然是一个指数级增长。

 评论
评论插件加载失败
正在加载评论插件
由 Hexo 驱动 & 主题 Keep
总字数 231.7k 访客数 访问量