博弈杂题选做

最近遇到了过量的博弈问题,先手和后手都很聪明,但是我不聪明/youl

Christmas Game

传送门

容易发现只有深度模 k k k 同余的点之间是相关的,而相关点之间是一个阶梯博弈的模型,即一个人移动偶数位置上的石子,另一个人一定可以将这些石子再移回奇数位置。于是偶数位置全部等价于根,变成了奇数位置上的 Nim 博弈问题。

于是设 f [ x ] [ i ] [ 0 / 1 ] f[x][i][0/1] f[x][i][0/1] 表示在 x x x 子树里与 x x x 距离 d i s   m o d   k = i dis\bmod k=i dismodk=i ⌊ d i s k ⌋   m o d   2 = 0 / 1 \left\lfloor\frac{dis}{k}\right\rfloor\bmod 2=0/1 kdismod2=0/1 的点的权值异或和,可以换根 dp 求出以每个点为根的答案,注意一些神秘写法需要特判 k = 1 k=1 k=1

总的胜负就是判断余数为 0 0 0 k − 1 k-1 k1 的异或和是否为 0 0 0

Future Failure

传送门

考虑一个字符串有偶数种不同排列的情况,若先手删去某个字符可以使自己必胜,那就删;否则先手可以对字符串进行重排,后手也只能选择重排,最后一定是后手找不到下一种排列,先手必胜。

那奇数种的情况呢?排列数 = n ! ∏ a i ! =\dfrac{n!}{\prod a_i!} =ai!n!,其中 a i a_i ai 为第 i i i 种字母出现的次数,排列数为奇数即 ∏ a i ! \prod a_i! ai! 中因子 2 2 2 的个数等于 n ! n! n! 2 2 2 的个数。若选含 2 2 2 最少的 a i a_i ai(设它含 k k k 2 2 2)并将其和 n n n 同时减 1 1 1,由于 ∑ a i = n \sum a_i=n ai=n,则 2 k ∣ n 2^k\mid n 2kn,分子分母损失的 2 2 2 的个数一样,排列数依然为奇数。

排列数为奇数的时候显然重排操作是没有意义的。若 n n n 为奇数,每人轮流删一个字符,最后后手没字符可删,先手必胜;反之先手必败。

不会子集卷积,可以选择很神奇的 dp,详见第一篇题解,懒得再敲一遍了/qd

Chip Game

传送门

我又不聪明/youl

以下设拿 a a a 的人为 A,拿 b b b 的人为 b b b

首先有两个性质:

  • ∀ i , v i ≡ v i ′ ( m o d a + b ) \forall i,v_i\equiv v'_i\pmod {a+b} i,vivi(moda+b) 的局面本质相同。

    证明:设 v v v 对应的局面为 s s s v ′ v' v 对应的局面为 s ′ s' s s s s 中 A 必胜。若 A 为后手且 B 上一个取 b b b 的位置可以再取一个 a a a,取 a a a;否则按 s s s 中 A 的必胜策略取,这样 A 依然必胜。

  • Alice 必胜和 Bob 必胜本质相同,方案数均为 ( m 2 − (m^2- (m2 先手必胜方案数 - 后手必胜方案数 ) ÷ 2 )\div 2 )÷2

以上两条一点也不显然的性质启发我们枚举 s = a + b s=a+b s=a+b,令 v i = v i   m o d   ( a + b ) v_i=v_i\bmod (a+b) vi=vimod(a+b),对每个 s s s 分别求出先手必胜和后手必胜的方案数,即可求解。

考虑什么时候是否必胜与先后手无关,令 a ≤ b a\le b ab,设去掉所有 v i < a v_i<a vi<a 的无用堆后堆数为 n n n,发现:

  • 结论一: ∃ i , a ≤ v i < b \exists i,a\le v_i<b i,avi<b,A 必胜。

    证明:A 和 B 先都在剩下不满足条件的堆里选, 若到 A 的时候没法选,A 可以选满足条件的那堆,否则 A 直接胜利。

  • 结论二:存在两个及以上 i , 2 a ≤ v i i,2a\le v_i i,2avi,A 必胜。

    证明:若 A 先手,可以先在满足条件的堆里拿一次,转化为结论一的情况;若 A 后手且只存在一个满足条件的堆,B 必然会选这个堆来阻止 A 到达上面的情况;而若有两个及以上满足条件的堆,B 就无法阻止了。

综上得出胜负与先后手有关的情况只有每个堆都能被两者取且只能被取一次。这时显然若 n n n 为偶数,后手必胜;否则先手必胜。

于是想要求与先手必胜和后手必胜的方案数,就可以将 v v v 升序排序,枚举 a , b a,b a,b 的值域 ( v i , v i + 1 ] (v_i,v_{i+1}] (vi,vi+1],考虑加上结论二的限制:

  • 此时为先手必胜:因为由结论二得到有一个 i i i 满足 2 a ≤ v i 2a\le v_i 2avi 时先手必胜,所以此时合法的附加条件是 a , b > ⌊ v n − 1 2 ⌋ a,b>\left\lfloor\frac{v_{n-1}}{2}\right\rfloor a,b>2vn1
  • 此时为后手必胜:附加条件为 a , b > ⌊ v n 2 ⌋ a,b>\left\lfloor\frac{v_{n}}{2}\right\rfloor a,b>2vn

于是对于每个 i i i 都可以得到一个合法区间 [ l , r ] [l,r] [l,r],就可以统计答案了。


未完待续pap

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值