当前位置: 首页 > 知识库问答 >
问题:

以最小的成本分成n个垃圾箱

陈和裕
2023-03-14
  1. 考虑2*k元组(a0,b0),(a1,b1)。。。和2个箱子A和B。将i-th元组放入箱子A将花费您ai美元,放入箱子B将花费您bi美元。将k元件放入料仓A和k元件放入料仓B的最低成本是多少

我提出了贪婪算法:对元组数组进行排序,将abs(ai-bi)作为键,按降序排列。然而,我们能用动态规划来解决这个问题吗?如果有nbin而不是两个呢。

共有1个答案

冀翰翮
2023-03-14

dp[i][j]是将j元素放入第一个i元素的bin A时的最小成本,例如,dp[0][0]是在前0个元素中将0个元素放入A的最小成本;dp[4][2]是在前4个元素中将2个元素放入A的最小成本

然后:对于第i个元素(索引是i-1,所以我使用b[i-1]a[i-1]),我们需要将其放入料仓a或料仓b中。因此我们计算两种情况下的最小值:

dp函数:dp[i][j]=数学。min(dp[i-1][j]b[i-1],dp[i][j-1]a[i-1])

然后问题是获得dp[2*k][k]

 类似资料:
  • 问题内容: 我有两节课 假设我在代码中使用对象B [say ],并在最终使用它后将其设置为。我知道B的对象现在可用于垃圾回收了。 我知道在将b设置为null之后,它将 立即有资格 进行垃圾回收吗?但是类型A的对象呢?将B设置为以后,是否可以 立即 将其用于垃圾回收?还是 在B被垃圾回收之后 才有资格 进行 垃圾回收 ? 从理论上讲,在对B进行垃圾收集之前,还有参考吗?因此,SUN JVM编译器将在

  • 问题内容: 我有一个奇怪的疑问。我知道垃圾收集器有其自身的局限性。如果分配不正确,则可能导致应用程序以异常方式响应。 所以我的问题是,在每个活动结束时强制调用垃圾回收器()是良好的编程习惯吗? 更新资料 每个人都说调用system.gc()根本没有好处。然后,我想知道为什么它出现在这里。DVM将决定何时运行垃圾收集器。那么,该方法需要什么? 更新2 感谢社区的帮助。但老实说,我从此链接中获得了有关

  • 我有一个最小成本流网络,其中一些弧有固定费用,也就是说,如果弧有非零流量,那么成本是c\u k,与流量无关。0的流产生0的成本。这些圆弧没有容量限制。 我知道如何将其建模为一个混合整数程序(MIP):添加一个0/1变量,成本为c\k。将arc上的容量设置为M*y\U k,其中M大于所有电源的总和。因此,当且仅当弧有流时,才会产生固定成本。 是否可以使用最小成本流公式来解决此问题,该公式比一般MIP

  • 如果我有一个(或多个)尚未启动,并且在该方法上有几个,方法。 垃圾收集器会移除所有这些吗? 如果在该链的末尾有一个< code > join()/< code > get() 也许我们需要更多关于连接上下文的信息()。 这种连接是线程中的最后一个命令,并且没有副作用。那么在这种情况下,线程仍然是活动的吗?- Java线程垃圾收集与否 无论如何,这是一个好主意,如果我确信(也许在尝试捕获中),那么将

  • 这是最小成本路径动态规划问题的一个变体,让我难倒了。 我得到了一个成本矩阵MXN。成本矩阵有随机放置的正缓冲区和负成本。我从[1,1]开始,必须到[m,n]。我从一个初始缓冲区x开始。在我的遍历过程中,我的缓冲区x永远不应该<=0。如果它变成<=0,那么即使结束状态是一个正缓冲区,也是一个无效的路径(把它想象成一个玩家从一些初始健康开始,负成本扣除健康,而正缓冲区增加健康)。什么是最小的初始缓冲区

  • 我想使用python最小成本流解算器来构建新的网络。这意味着我有一个初始的完整图,顶点要么是供应商,要么是有需求的。使用该算法应该告诉我,根据它们的成本,将使用哪些边来解决所有需求。与现有问题不同的是,一条边在使用时的成本不仅用单位成本来描述,而且还有一条边的投资,该投资与流量无关。我一直在研究networkx和/或工具的源代码,但不知道如何调整这些代码以实现Edge的投资成本。是否有人有更好的想