灵感-1
之前想到了一道题目:给定n,m,表示有n个石子,每次取1到m个,最后取完次数为奇数次的方案总数(纯数学解决)。和同学讨论后,被同学解决了(他好厉害。。。。),在此引用他的思路。
约定:\(\binom{n}{m}=C_n^m\),是组合数另一种写法。
记 \(q(n,0/1)\) 表示在 \(n\) 个球中选任意个球,其中选的球的个数是奇数/偶数的方案数。则 \(q(n,0/1)=2^{n-1}\),即前 \(n-1\) 个球可以任意选,最后一个球的状态可以直接根据前 \(n-1\) 个球选择个数的奇偶性决定,特判一下 \(n \le 0\) 的情况。
将 \(n\) 个球分成 \(m\) 份且每份非空,没有个数上限的方案数是 \(\binom{n-1}{m-1}\)。(插板法可得,上网搜也能搜到)
\(O(n^2)\):
考虑枚举取石子的出现次数奇数 \(i\),并且容斥,强制钦定 \(i\) 次中哪 \(j\) 次选择石子个数 \(>m\),则将这 \(j\) 次先减去 \(m\),视为它们已经取了 \(m\) 个,再将剩下的 \(n-m \times j\) 个石子分给 \(i\) 次,则答案是:
\(O(n)\):
将 \(i,j\) 的枚举顺序交换,并且将 \(\binom{i}{j} 改成 \binom{i-1}{j-1}+\binom{i-1}{j}\),则原式为:
考虑枚举 \(j\),将 \(n-m \times j -1\) 换成 \(k\),那么现在只需要考虑形如 \(\sum\limits_{i=j}^n \binom{i-1}{j} \times \binom{k}{i-1}\) 的形式。
考虑将 \(\sum\) 右边的式子重新理解一下,就是在 \(k\) 个球中选择 \(i-1\) 个数写上 \(1\),并且再在这 \(i-1\) 个球中选择 \(j\) 个球写上 \(2\),其中 \(i\) 多大都可以,只要是奇数。
那么我们可以直接指定这 \(k\) 个球中哪些写了 \(2\),再在剩下来的球中任意涂上 \(1\),并且满足写了数字的球的个数是 \(i-1\),即有偶数个球写了数字,那么方案数就是 \(\binom{k}{j} \times q(k-j,j\%2)\)
那么最终式子就是: