【POJ 3253】【贪心+优先队列】Fence Repair

感觉优先队列经常用在贪心的题目里面,坑点大概就是ans要是longlong的,要不然就会WA

还有就是最短的和第二短的应该是由同一块木板切出来的,排序也可以做,优先队列快!!stl大法好


#include "iostream"
#include "cstring"
#include "queue"
long long  a[20005];
using namespace std;
int main(int argc, char const *argv[])
{
  int num;
  while(~scanf("%d",&num))
  {
    long long  ans=0;
    memset(a,0,sizeof(a));
    priority_queue<int, vector<int>,greater<int> > que;
    for (int i = 0; i < num; ++i)
    {
      scanf("%lld",&a[i]);
      que.push(a[i]);
    }
    while(que.size()>1)
    {
      int a=que.top();
      que.pop();
      int b=que.top();
      que.pop();
      ans+=(a+b);
      que.push(a+b);

    }
    cout<<ans<<endl;
  }
  return 0;
}


你可能感兴趣的:(数据结构,C++,poj,水题,贪心)