Algorithm 幂乘积最大化算法

Algorithm 幂乘积最大化算法,algorithm,Algorithm,给定两个整数数组,B和A,我们如何重新排列它们的元素∏ A[i]B[i]对于所有i都是最大化的?假设为非负,似乎您应该按照递增或递减(但相同)的顺序对它们进行排序 因为一切都是相乘的,所以最终会得到一个[0]*A[0]*…*A[0]*A[1]*..*A[1]*。。。等等 因此,如果假设A[0]是最大的数,那么你需要的是其中的大部分,因此你应该在B[0]中有最大的值B,然后在B[1]中有第二大值,等等 如果A中可以有负数,但B中没有负数,那么这仍然会给出最大的绝对值,但符号可以是负数。如果数组包含

给定两个整数数组,B和A,我们如何重新排列它们的元素∏ A[i]B[i]对于所有i都是最大化的?

假设为非负,似乎您应该按照递增或递减(但相同)的顺序对它们进行排序

因为一切都是相乘的,所以最终会得到一个[0]*A[0]*…*A[0]*A[1]*..*A[1]*。。。等等

因此,如果假设A[0]是最大的数,那么你需要的是其中的大部分,因此你应该在B[0]中有最大的值B,然后在B[1]中有第二大值,等等


如果A中可以有负数,但B中没有负数,那么这仍然会给出最大的绝对值,但符号可以是负数。

如果数组包含非负数,则只需按降序对A和B进行排序。要看到这给出了最大的产品,考虑一旦A和B按这个顺序排序,您可以尝试交换两个A项,比如A [i]和[j] S.T.I。
              B[j]      B[i]
          A[i]      A[j]
          ------------------
              B[i]      B[j]
          A[i]      A[j]

i、 e.A[i]B[j]-B[i]A[j]B[i]-B[j],等于(A[i]/A[j])(B[j]-B[i]),其中指数为零或负,因为B[i]≥B[j]。假设A[i]≥A[j]so A[i]/A[j]≥1.因此,当指数为0或负时,比率为1或更小。这表明新产品的价值低于旧产品。注意:这只是一个说明,不是一个正式的证明,因为它只考虑两个元素的交换。

假设数组有正整数

如果您获取产品的日志:

它变成了
Sum B[i]*log A[i]

现在,如果两者都按升序排列,这可以最大化,因为重排不等式,(参见此处:)和log是一个递增函数


所以,在升序中对A排序,在升序中对B排序,那么您就完成了。

在您询问答案之前,您是否真的尝试了这个问题?所有元素都是非负的吗?设置A[0]=0。bogosort的一次迭代。小菜一碟。韦斯,我想我本可以花更多的时间在我的问题上添加信息(比如我自己的工作)。但是,我更感兴趣的是看看人们会想出什么其他方法和证据。此外,以这样一种放肆的方式作出回应,你会觉得自己是一个混蛋,并且没有增加任何建设性的信息。通常证明这种情况的最优性的方法是显示任何其他的配置都可以被改进——因此,考虑任何一个[i]>a[j]但b[i] < b[j]的情况,我认为你可以(非常)。显示您可以通过交换一对来改善结果。因此,没有未排序的解决方案是最优的,因此最优的是排序的配置。但是,如果一个[我]可以是-ve,会发生什么呢?这是问题允许的吗?谢谢你的明确证明。我已经得出了这个答案,但不知道如何证明