Fence Repair (优先队列做法)

1,这种错误不正是你想提前遇到并且解决的吗?

2,显然这题贪心法我已经忘了。

你都用你那种方法了,还写什么

 if(min1=n-1) swap(a[min1],a[min2]) 

..你的min1必为0啊。。

3,贪心都复习了一下。 if(min1=n-1) swap(a[min1],a[min2]); 

if(min1=n-1) swap(min1,min2);

  这个能换两个。。

4,这个倒是没什么难的,我懂思想,基本上都懂了。

#include<iostream>
#include<queue>
using namespace std;
int n,a[1005];
long long ans=0;
    priority_queue<int, vector<int>,greater<int> > que;
int main()
{
    cin>>n;
    for(int i=0;i<n;i++) {cin>>a[i];que.push(a[i]);
    }
    while(que.size()>1)
    {
        int a=que.top();
        que.pop();
        int b=que.top();
        que.pop();
        int t=a+b;
        ans+=t;
        que.push(t);
    }
    cout<<ans<<endl;
 } 
posted @ 2020-01-16 15:45  北月真好  阅读(228)  评论(0编辑  收藏  举报