题解

2 条题解

  • 0
    @ 2018-09-17 09:49:35

    注意答案和样例是不符的,这题有毒,最后的距离不要+1

    //哈夫曼树+堆O(nlogn)算法(类似合并果子) 
    #include<iostream>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    ll n,a[2000001],s;
    long long ans;
    struct heap
    {//小根堆 
        ll val[2000001],size;
        void set(ll v){
            size++;
            val[size]=v;
            ll p=size;
            while(p>1 && val[p>>1]>v){
                val[p]=val[p>>1];
                p>>=1;
            }
            val[p]=v;
        }
        ll get(){
            ll v=val[1];
            val[1]=val[size];
            size--;
            pd(1);
            return v;
        }
        void pd(ll v){
            ll lar=v,l=v*2,r=v*2+1;
            if(l<=size) lar=val[l]<val[lar]?l:lar;
            if(r<=size) lar=val[r]<val[lar]?r:lar;
            if(lar!=v){
                swap(val[v],val[lar]);
                pd(lar);
            }
        }
    }h; 
    int main(){
        ios::sync_with_stdio(false);
        h.size=0;
        s=0;
        ans=0;
        cin>>n;
        int i;
        ll x,y;
        for(i=1;i<=n;i++){
            cin>>a[i];
            s+=a[i];
            h.set(a[i]); 
        }
        while(h.size>1){
            x=h.get();
            y=h.get();
            ans+=x+y;
            h.set(x+y);
        }
        //ans+=s;
        cout<<ans;
    }
    
  • 0
    @ 2013-12-22 08:40:17

    这个题是不是有问题?
    不是超级女友的 输入方式没给啊?
    还是我理解错了?
    有懂得回复下!!!

    • @ 2015-01-15 17:23:52

      普通女友无限啊~,不然你怎么通知到所有超级女友,对于这个出题人的尿性我也是醉了!

  • 1

信息

ID
1837
难度
6
分类
(无)
标签
(无)
递交数
51
已通过
14
通过率
27%
被复制
2
上传者