AT_abc265_h [ABC265Ex] No-capture Lance Game 题解

nim游戏的小变形。
观察到每一行有两种类型:相向而行、背道而驰。
如果都是相向而行,那就是简单的nim游戏,直接 \(dp_{i,j}\) 表示 \(i\) 行的异或和是 \(j\) 的方案数就做完了。
那考虑背道而驰会带来什么影响,那就是互不影响一格一格消耗就是了,所以会影响“先后手问题”!
设先手Alice,后手Bob。Alice有A格可消耗,Bob有B格可消耗。

  1. \(A>B\) ,Alice一定可以决定自己先手还是后手,所以nim游戏Alice必胜。
  2. \(A=B\) ,就是普通的nim游戏。
  3. \(A<B\) ,同1,Bob必胜。

那就很明白了,\(dp_{i,j}\) 表示总共 \(i\) 行相向而行,他们的异或和是 \(j\) 的方案数,\(f_{i,j}\) 表示总共 \(i\) 行背道而驰,\(A-B=j\) 的方案数。 \(dp\) 数组的转移是容易的,重点在 \(f\) 数组的转移上。
容易弄出 \(O(H^2W^2)\) 的转移:\(f_{i,j}=\sum_{k=-HW}^{HW}{(f_{i-1,k}*\lfloor\frac{max(W-|j-k|,0)}{2}\rfloor)}\) ,但是复杂度还是无法通过。注意到相邻两项的差值很小且有迹可循(整除2带来的性质),于是我们考虑相邻两项:$$ f_{i,j}=f_{i,j-1}+\sum_{k=-HW}^{HW}(f_{i-1,k}[j+k+w\equiv0(mod 2)])-\sum_{k=-HW}^{HW}(f_{i-1,k}[j+k+w\equiv1(mod 2)]) $$
这样就可以分 \(mod 2\) 的余数进行前缀和优化了。
最后输出 \(ans=\sum_{i=0}^{n}\binom{H}{i}(f_{i,0}*\sum_{j=1}^{2W}{dp_{H-i,j}}+\sum_{j=1}^{iW}{f_{i,j}}*\sum_{k=0}^{2W}{dp_{H-i,k}})\) 。
复杂度 \(O(H^2W)\) ,需要卡常。

posted @ 2026-10-08 23:15  bjq521  阅读(1)  评论(0)    收藏  举报