• 1113 Integer Set Partition (25)


    Given a set of N (> 1) positive integers, you are supposed to partition them into two disjoint sets A~1~ and A~2~ of n~1~ and n~2~ numbers, respectively. Let S~1~ and S~2~ denote the sums of all the numbers in A~1~ and A~2~, respectively. You are supposed to make the partition so that |n~1~ - n~2~| is minimized first, and then |S~1~ - S~2~| is maximized.

    Input Specification:

    Each input file contains one test case. For each case, the first line gives an integer N (2 <= N <= 10^5^), and then N positive integers follow in the next line, separated by spaces. It is guaranteed that all the integers and their sum are less than 2^31^.

    Output Specification:

    For each case, print in a line two numbers: |n~1~ - n~2~| and |S~1~ - S~2~|, separated by exactly one space.

    Sample Input 1:

    10
    23 8 10 99 46 2333 46 1 666 555
    

    Sample Output 1:

    0 3611
    

    Sample Input 2:

    13
    110 79 218 69 3721 100 29 135 2 6 13 5188 85
    

    Sample Output 2:

    1 9359
    这题太水了, 排序求前n/2项和,再用总和相减就得到结果
     1 #include<iostream>
     2 #include<vector>
     3 #include<algorithm>
     4 using namespace std;
     5 int main(){
     6   int n, i, total=0;
     7   cin>>n;
     8   vector<int> v(n);
     9   for(i=0; i<n; i++) {scanf("%d", &v[i]); total+=v[i];}
    10   sort(v.begin(), v.end());
    11   int x=0;
    12   for(i=0; i<n/2; i++) x += v[i];
    13   printf("%d %d", n%2==0?0:1, total-2*x);
    14   return 0;
    15 }
    有疑惑或者更好的解决方法的朋友,可以联系我,大家一起探讨。qq:1546431565
  • 相关阅读:
    Stream流的使用
    ThreadLocal原理和使用场景?
    Python+Appium实现APP自动化测试
    查看Linux系统版本信息
    linux命令之修改yum源为国内镜像
    lsb_release: command not found 解决
    docker安装mysql
    win10 系统出现“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问。”
    python常用sys模块
    python常用os模块
  • 原文地址:https://www.cnblogs.com/mr-stn/p/9168438.html
Copyright © 2020-2023  润新知