zoukankan      html  css  js  c++  java
  • 合并果子(优先队列 +或者+哈夫曼)

    合并果子

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 312  Solved: 113
    [Submit][Status][Web Board]

    Description

    现在有n堆果子,第i堆有ai个果子。现在要把这些果子合并成一堆,每次合并的代价是两堆果子的总果子数。求合并所有果子的最小代价。

    Input

    第一行包含一个整数T(T<=50),表示数据组数。
    每组数据第一行包含一个整数n(2<=n<=1000),表示果子的堆数。
    第二行包含n个正整数ai(ai<=100),表示每堆果子的果子数。

    Output

    每组数据仅一行,表示最小合并代价。

    Sample Input

    2
    4
    1 2 3 4
    5
    3 5 2 1 4

    Sample Output

    19
    33

    HINT

    (优先队列 +或者+哈夫曼)

    #include<stdio.h>
    #include<queue>
    using namespace std;
    struct node
    {
       int a;
       friend bool operator<(node aa,node bb)
       {
           return aa.a>bb.a;
       }
    };
    int main()
    {
        int n,t,a,sum;
        node bb,aa;
        scanf("%d",&t);
        while(t--)
        {
            priority_queue<node>q;
            scanf("%d",&n);
            for(int i=0;i<n;i++)
            {
                scanf("%d",&a);
                bb.a=a;
                q.push(bb);
            }
            sum=0;
            while(!q.empty())
            {
                aa=q.top(); q.pop();//printf("%d ",aa.a);
                if(n==1)  break;
                bb=q.top(); q.pop();
                n--;
                aa.a+=bb.a;
                sum+=aa.a;
                q.push(aa);
            }
            printf("%d
    ",sum);
        }
    }
     
    /**************************************************************
        Problem: 1588
        User: aking2015
        Language: C++
        Result: Accepted
        Time:92 ms
        Memory:1064 kb
    ****************************************************************/
  • 相关阅读:
    ExtJs中动态加载机制研究(转)
    ExtJs4 学习3 combox自动加载的例子
    Extjs 4学习2
    ExtJS 4学习
    javascript学习(知识点整理)
    ExtJS智能提示工具spket安装与破解
    eclipse慢 优化(转)
    疯狂学习java web5(SSI框架)
    疯狂学习java web4(jsp)
    疯狂学习java web3(javaScript)
  • 原文地址:https://www.cnblogs.com/yuyixingkong/p/4471260.html
Copyright © 2011-2022 走看看