AcWing:1603. 整数集合划分
简单贪心
题目要求: 使得两个集合的个数尽量的小,然后在那个基础上使得两个集合的差最大
集合个数尽量的小 >> 不是 0 就是 1 ( 偶数 or 奇数
差最大 >> 一个将所有最小的 n / 2 个数包揽, 另一个将剩余的最大的数包揽, 相减即可
AC Code
import java.util.*;
import static java.lang.System.out;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++) arr[i] = in.nextInt();
Arrays.sort(arr);
int k = n % 2;
int pre = 0, suf = 0;
for(int i = 0; i < n; i++) {
if(i < n / 2) pre += arr[i];
else suf += arr[i];
}
out.println(k + " " + (suf - pre));
}
}