码迷,mamicode.com
首页 > 其他好文 > 详细

NYOJ 47

时间:2017-10-16 21:58:28      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:stdio.h   color   for   mes   amp   scanf   +=   直接   turn   

 

思路:

       在n>3的时候就用前两个小的来带后两个大的,有两种方式(一就是1,2先过,然后1回来,然后n,n-1过,然后2,回来),(二就是 1,n先过去 然后1回来,然后 1,n-1过去吗、,然后1回来)

 

 

 

如果n==3的时候,就1,2过然后1回来,然后1,3过就过来了,如果n==2时,1,2一起过,如果n==1时,直接1过来就行了.

 

#include <stdio.h>  
#include <string.h>  
#include <algorithm>  
using namespace std;  
int a[1000+5];  int main()  
{  
    int T;  
    scanf("%d",&T);  
    while(T--)  
    {  
        int n;  
        scanf("%d",&n);  
        for(int i=1;i<=n;i++)  
        {  
            scanf("%d",&a[i]);  
        }  
        sort(a+1,a+1+n);  
        int sum=0,k=n;  
        while(k>3)  
        {  
            if(a[k]+a[k-1]+2*a[1]>a[1]+a[k]+2*a[2])  
            {  
                sum+=a[1]+a[k]+2*a[2];  
                k-=2;  
            }  
            else  
            {  
                sum+=a[k]+a[k-1]+2*a[1];  
                k-=2;  
            }  
        }  
        if(k==3)  
        {  
            sum+=a[1]+a[2]+a[3];  
        }  
        if(k==2)  
        {  
            sum+=a[2];  
        }  
        if(k==1)  
        {  
            sum+=a[1];  
        }  
        printf("%d\n",sum);  
    }  
    return 0;  
}  

 

NYOJ 47

标签:stdio.h   color   for   mes   amp   scanf   +=   直接   turn   

原文地址:http://www.cnblogs.com/fzuhyj/p/7678216.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!