1. 程式人生 > >人活著系列之尋找最完美的人生 2937

人活著系列之尋找最完美的人生 2937

人活著系列之尋找最完美的人生

Problem Description
也許,人活著就是要嘗試人世間的酸甜苦辣,喜怒哀樂,經歷從嬰兒到老人的一個過程吧!能看,能想,能愛,能恨,這就是活人與死人的區別。不要想著死後會怎樣,誰也不知道。所以要好好的活著,寬待自己,好好珍惜身邊的人!
現在,上帝之手寬恕與你。把你人生中所要經歷的所有的酸甜苦辣全部擺在你的面前。你一生需要經歷n種事情。每種事情都有一個權值x。上帝給了你n-1個時光隧道。你可以把時光隧道放在任意兩種事情的中間,如果你把時光隧道放在a,b中間,那麼你需要花費3*(xa+xb)+7 。現在,你需要把這n-1個時光隧道連在n種事情中間,使得任意兩種事情都會相連,並且花費最小。輸出最小花費。
Input
首先輸入一個數T,代表有T組資料。
接下來一行輸入一個數n。
接下來的一行輸入n個數,第i個數代表第i種事情的權值。
n<=1000,每種事情的權值<=100000;
T<=60
Output
輸出T行,每行輸出最小花費。
Sample Input
1
2
1 2
Sample Output
16

//int find(int x)
//{
//    if(x!=f[x])
//    {
//        f[x]=find(f[x]);
//    }
//    return f[x];
//}
//void join(int x,int y)
//{
//    x=find(x);
//    y=find(y);
//    if(x!=y)
//    {
//        f[y]=x;
//    }
//}

#include <stdio.h>
#include <stdlib.h>
int a[1100];
int cmp(const void *a,const void *b)
{
  return
*(int *)a - *(int *)b; } int main() { int t,n,i,s; scanf("%d",&t); while(t--) { s=0; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); qsort(a,n,sizeof(a[0]),cmp); for(i=1;i<n;i++) { s=s+(a[0]+a[i])*3+7; }
printf("%d\n",s); } return 0; }