2019.01.19算法题:HDU - 1171

HDU - 1171   Big Event in HDU(多重背包)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1171

代码地址:https://paste.ubuntu.com/p/475szpbZpG/

思路:

多重背包,把总价值的一半做背包体积即可。

因为尽量使得A,B两者分得的价值接近相等(两者价值总和为所有设施设备的总价值),并且A分得的价值不小于B分得的价值,

那么问题就可以转化成:在不超过总价值的一半(视为背包的容量△(已经是确定值))下,挑选若干件物品装入背包后,使得总价值最大,即为B得到的最大价值,(所以把总价值的一半做背包体积即可,,啦啦啦)

然后,A得到的价值为sum-dp[sum/2]。(dp可让我懵了一下,,)

(。。大佬说:最坏的时间复杂度大约为6e8级别,可见测试数据挺水的)

似乎母函数也可以。。。?。。。

注:有的大佬写分析时,,把总价值说成了权值,,百度一下,在数学领域,权值指加权平均数中的每个数的频数,也称为权数或权重。计算机领域中(数据结构),权值就是定义的路径上面的值。可以这样理解为结点间的距离。通常指字符对应的二进制编码出现的概率。。。就这么囫囵吞枣地吞下了。


分裂在HDU绝对是一件大事!!!然后我特意搜了搜HDU的历史,,连个毛毛都没找到。。

你可能感兴趣的:(2019.01.19算法题:HDU - 1171)