最小乘积

/**
 * 给两组数,各n个。
 * 请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。
 */
import java.util.*;
import java.io.*;


public class 最小乘积 {

public static void JianArray(Integer[] b1) {
Arrays.sort(b1);
int i = 0, n = b1.length - 1;
while (n > 2 * i) {
Integer t = b1[i];
b1[i] = b1[n - i];
b1[n - i] = t;
i++;
}
}


public static void main(String[] args) {
Scanner in = new Scanner(new BufferedInputStream(System.in));
int n = in.nextInt();
for (int i = 0; i < n; i++) {
int num = in.nextInt();
Integer[] a = new Integer[num];
Integer[] b = new Integer[num];
for (int j = 0; j < num; j++) {
a[j] = in.nextInt();
}


for (int j = 0; j < num; j++) {
b[j] = in.nextInt();
}


Arrays.sort(a);
JianArray(b);
int sum = 0;
for (int j = 0; j < num; j++) {
sum += a[j] * b[j];
}
System.out.println(sum);


}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值