Skip to main content

2321

交换两个数组arr1, arr2的子数组,使max(sum(arr1), sum(arr2))最大化

想法1 (错误❌想法)

使用kadane算法找到arr1, arr2的最大和最小子数组分别进行交换,设maxsumarr1, minsumarr1, sum1, maxsumarr2, minsumarr2, sum2, 答案是max(sum1 - maxsumarr1 + 对应arr2的值,sum2 + maxsumarr1 - 对应arr2的值,sum1 - minsumarr1 + 对应arr2的值,sum1 + minsumarr1 - 对应arr2的值, ...)

错误点,arr1的最大值对应在arr2也有可能最大换之后可能没差,关键点注意错误

得注意arr1[i]arr2[i]的差值关系

想法2 (正确

使用kadane找到最大差值 arr1[i] - arr2[i], 这使sum2最大,同理使sum1也这么做再比较两者