hdu-4989 Summary(水题)

题目链接:

Summary

Time Limit: 2000/1000 MS (Java/Others)   

 Memory Limit: 32768/32768 K (Java/Others)

Problem Description
 
Small W is playing a summary game. Firstly, He takes N numbers. Secondly he takes out every pair of them and add this two numbers, thus he can get N*(N - 1)/2 new numbers. Thirdly he deletes the repeated number of the new numbers. Finally he gets the sum of the left numbers. Now small W want you to tell him what is the final sum.
 

 

Input
 
Multi test cases, every case occupies two lines, the first line contain n, then second line contain n numbers a1, a2, ……an separated by exact one space. Process to the end of file.
[Technical Specification]
2 <= n <= 100
-1000000000 <= ai <= 1000000000
 

 

Output
 
For each case, output the final sum.
 

 

Sample Input
4
1 2 3 4
2
5 5
 

 

Sample Output
25
10
 
题意:
 
求生成的数的和,重复的去掉;
 
思路:
 
水题;
 
AC代码:
 
#include <bits/stdc++.h>
using namespace std;
const int N=3e5+4;
typedef long long ll;
int n,a[103];
queue<int>qu;
map<int,int>mp;
int main()
{
    while(scanf("%d",&n)!=EOF)
    {
        ll ans=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=i+1;j<=n;j++)
            {
                mp[a[i]+a[j]]=0;
                qu.push(a[i]+a[j]);
            }
        }
        while(!qu.empty())
        {
            int fr=qu.front();
            qu.pop();
            if(mp[fr]==0)ans+=fr,mp[fr]=1;
        }
        printf("%lld\n",ans);
    }
    return 0;
}

 

posted @ 2016-04-16 10:54  LittlePointer  阅读(197)  评论(0编辑  收藏  举报