平均值问题
动态规划相关
题目1:现在有重量为1,2,…,n的商品各k件,希望取走一部分商品,要求对所有1≤x≤n计算有多少种取法(不允许一个不取),取走的商品的平均重量恰好为x。这里满足1≤n,k≤100。
对于平均值的计算方法,普通的思路就是算出总和,之后除去总数的到。于是这给出了一个DP,时间复杂度为O(n4k2),太慢了。
还有一种计算平均值的方案,即先将所有的商品重量都减去x,之后如果商品的总重量正好等于0,那么平均值就一定是x。这种方法的好处就可以允许我们的DP数组不用再记录具体取了多少件商品。
现在的解决方案就非常简单了,记dp(i,j)表示重量为1到i的货物的总重量为j的方案数。这个dp的时间复杂度为O(n3k),还是可以接受的。
接下来要计算平均值为x的方案数,其结果为dp(x−1,0)dp(n−x,0)k+∑i>0dp(x−1,i)dp(n−x,i)(k+1)。
提供一道题目。