zoukankan      html  css  js  c++  java
  • PAT L2-017. 人以群分

    题目链接:https://www.patest.cn/contests/gplt/L2-017

    题目:

    社交网络中我们给每个人定义了一个“活跃度”,现希望根据这个指标把人群分为两大类,即外向型(outgoing,即活跃度高的)和内向型(introverted,即活跃度低的)。要求两类人群的规模尽可能接近,而他们的总活跃度差距尽可能拉开。

    输入格式:

    输入第一行给出一个正整数N(2 <= N <= 105)。随后一行给出N个正整数,分别是每个人的活跃度,其间以空格分隔。题目保证这些数字以及它们的和都不会超过231

    输出格式:

    按下列格式输出:

    Outgoing #: N1
    Introverted #: N2
    Diff = N3
    

    其中 N1 是外向型人的个数;N2 是内向型人的个数;N3 是两群人总活跃度之差的绝对值。

    一开始以为是要二分,然后就xjb二分一天,最后发现就判断n的奇偶性就好,后面的活跃度随便用什么方法,最简单的就是分成两半求和即可,我用的前缀和,权当练习前缀和

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 using namespace std;
     5 
     6 const int maxn=1e5+7;
     7 int n,n1,n2;
     8 int a[maxn],sum[maxn];
     9 
    10 int main(){
    11     while(~scanf("%d",&n)){
    12         memset(sum,0,sizeof(sum));
    13         for(int i=1;i<=n;i++){
    14             scanf("%d",&a[i]);
    15         }
    16         sort(a+1,a+n+1);
    17         for(int i=1;i<=n;i++){
    18             sum[i]=sum[i-1]+a[i];
    19         }
    20         if(n%2){
    21             n1=n/2+1;
    22             n2=n/2;
    23         }
    24         else{
    25             n1=n2=n/2;
    26         }
    27         printf("Outgoing #: %d
    ",n1);
    28         printf("Introverted #: %d
    ",n2);
    29         printf("Diff = %d
    ",sum[n]-2*sum[n2]);
    30     }
    31 }
  • 相关阅读:
    Path Sum II
    Convert Sorted Array to Binary Search Tree
    Construct Binary Tree from Inorder and Postorder Traversal
    Construct Binary Tree from Preorder and Inorder Traversal
    Maximum Depth of Binary Tree
    Binary Tree Zigzag Level Order Traversal
    Binary Tree Level Order Traversal
    Same Tree
    Validate Binary Search Tree
    Binary Tree Inorder Traversal
  • 原文地址:https://www.cnblogs.com/Dillonh/p/8668693.html
Copyright © 2011-2022 走看看