题目描述

分析:把一组数分成两部分,使得差最大,两部分的数量差最小,只需把这组数排序,完后后半部分减去前半部分即可。
#include<cstdio>
#include<algorithm>
#include<numeric>
using namespace std;
int main(){
int N;
scanf("%d",&N);
int A[N];
for(int i=0;i<N;++i)
scanf("%d",&A[i]);
sort(A,A+N);
int s1=accumulate(A,A+N/2,0),s2=accumulate(A+N/2,A+N,0);
printf("%d %d",N%2,s2-s1);
return 0;
}
本文介绍了一种通过排序和分组来解决特定问题的方法:将一组整数分成两个子集,使得这两个子集的元素之和的差尽可能大,同时确保两组之间的数量差异最小。使用C++实现并演示了这一算法。
437

被折叠的 条评论
为什么被折叠?



