平均值问题

Published: by Creative Commons Licence

  • Tags:

动态规划相关

题目1:现在有重量为1,2,,n的商品各k件,希望取走一部分商品,要求对所有1xn计算有多少种取法(不允许一个不取),取走的商品的平均重量恰好为x。这里满足1n,k100

对于平均值的计算方法,普通的思路就是算出总和,之后除去总数的到。于是这给出了一个DP,时间复杂度为O(n4k2),太慢了。

还有一种计算平均值的方案,即先将所有的商品重量都减去x,之后如果商品的总重量正好等于0,那么平均值就一定是x。这种方法的好处就可以允许我们的DP数组不用再记录具体取了多少件商品。

现在的解决方案就非常简单了,记dp(i,j)表示重量为1i的货物的总重量为j的方案数。这个dp的时间复杂度为O(n3k),还是可以接受的。

接下来要计算平均值为x的方案数,其结果为dp(x1,0)dp(nx,0)k+i>0dp(x1,i)dp(nx,i)(k+1)

提供一道题目