A 平板游戏-2019浙江理工大学新生赛

问题 A: 平板游戏

时间限制: 1 Sec  内存限制: 128 MB

题目描述

 小黑和小白喜欢玩平板游戏,游戏一开始屏幕上会出现很多个图形,玩家在每一轮可以合并两个图形,当只有一个图形的时候游戏结束,每个图形都有一个大小,合并完成后的图形的大小为x+y,x和y分别为合并之前的两个图形,与此同时,玩家会获得x*y的分数。
小黑和小白新开了一盘游戏,屏幕上出现了n个图形,每个图形的大小已知,请算出小黑和小白最大能获得的分数

输入

 第一行输入一个整数n (2  <= n <= 100 )
第二行输入n个整数范围在1到100之间

输出

 输出一个整数,表示能获得的最高分

样例输入

【样例输入1】
3
1 2 3
【样例输入2】
2
3 4
【样例输入3】
3
2 2 2

样例输出

【样例输出1】
11
【样例输出2】
12
【样例输出3】
12

题解:一道水题。保险的做法是先sort排序后再用贪心合并。其实只要观察一下样例,就会发现

           这题是一道恒等式。(不会证明)

贴上代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,d[110],i;
    while(cin>>n)
    {
        for(i=1; i<=n; i++)cin>>d[i];
        sort(d+1,d+1+n);
        int sum=d[n];
        long long ans=0;
        for(i=n-1; i>=1; i--)
        {
            ans+=sum*d[i];
            sum+=d[i];
        }
        cout<<ans<<endl;
    }
}
发布了43 篇原创文章 · 获赞 12 · 访问量 3657

猜你喜欢

转载自blog.csdn.net/xzerui/article/details/88951737