/**
* 给两组数,各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);
}
}
}最小乘积
原文:http://blog.csdn.net/a736933735/article/details/44239963