我最近遇到了一个问题。
假设f(n,c)=用不同的颜色绘制n个不同球的方法。 (注意所有c颜色必须至少使用一次,每个球被认为是不同的)
对于这个问题,我需要计算所有f(n,c),其中1< = c< = n< = S mod 1e9 + 7。
对于原始问题,S = 200。所以我制作了一个O(S ^ 3)解决方案,如下所示:
+----+-------+
| Id | Score |
+----+-------+
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
+----+-------+
但我想可能有一些方法可以在O(S ^ 2)中解决它。我怎样才能做到这一点?
答案 0 :(得分:3)
这是inclusion exclusion principle的典型应用程序。让我们用f(n, k)
来表示用高达 k种颜色(原始c颜色)和g(n, k)
颜色n种颜色的方法对n球进行着色的方法数量n个球具有完全 k种颜色(原始c颜色之外)。然后是g(n, k) = f(n, k) - f(n, k - 1) + f(n, k - 2) - ...
。计算用最多k种颜色对球进行着色的方法要容易得多 - 实际上这个公式很简单,但我会留给你弄清楚它是什么。
最后你要找的数字是g(n,c),可以用上面的公式计算。