这道题目的转化真是巧妙啊。不过据说题目有点问题,那就不管了。首先将第i个白子和第i个黑子组成一对。那么这一对中,白子的左移是没有意义的,黑子的右移也是没有意义的(虽然有反例,但好像只能这样了)。那么每一对黑子和白子可以看成一堆火柴,则问题转化为一次在d堆中拿火柴的必胜策论。
对于d-Nim(就这么叫了)问题,有个结论是如果对于二进制的每一位的抑或值x都有x≡0(mod d+1),那么为必败状态,否则为必胜状态。证明不会。。
然后就可以用f[i][j]表示到二进制的第i位(从低到高),目前总和为j的必败状态方案数。注意j<=N-K。那么f[i][j]可以转移到f[i+1][j+x*(d+1)*2^(i)],注意有C(K/2,x*(d+1))种组合方式。