zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    shell 从键盘读取输入时删除输入的字符
    spring boot 下 mapper接口与xml文件映射问题
    tcpdump
    Linux TCP自连接问题
    git commit 合并到指定分支
    工作教训总结
    git 撤销修改和版本回退
    Java 注解方式校验请求参数
    JVM 监控工具——jconsole
    排查Full GC
  • 原文地址:https://www.cnblogs.com/mr-stn/p/9168438.html
Copyright © 2011-2022 走看看