bzoj1724: [Usaco2006 Nov]Fence Repair 切割木板

Posted oyzx~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj1724: [Usaco2006 Nov]Fence Repair 切割木板相关的知识,希望对你有一定的参考价值。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <queue>
 6 using namespace std;
 7 int n,a;
 8 typedef long long ll;
 9 ll ans;
10 void read(int &x){
11     x=0; int f=1; char ch;
12     for (ch=getchar();!isdigit(ch);ch=getchar()) if (ch==\'-\') f=-1;
13     for (;isdigit(ch);ch=getchar()) x=x*10+ch-\'0\'; x*=f;
14 }
15 priority_queue< int,vector<int>,greater<int> >heap;
16 int main(){
17     read(n),ans=0;
18     for (int i=1;i<=n;i++) read(a),heap.push(a);
19     for (int x,y,i=1;i<n;i++){
20         x=heap.top(),heap.pop();
21         y=heap.top(),heap.pop();
22         ans+=x+y; heap.push(x+y);
23     }
24     printf("%lld\\n",ans);
25     return 0;
26 }
View Code

做法:堆入门题,学习系统堆的用法——>雾(:

大根堆:priority_queue<int>heap;

小根堆:priority_queue< int,vector<int>,greater<int> >heap;

heap.top() 函数:堆顶的元素值;

heap.pop()过程:弹出堆顶元素;

heap.empty()函数:堆空与否,堆空则返回1,否则返回0;

heap.push()过程:在堆中加入一个元素,并维护堆的性质。

 

以上是关于bzoj1724: [Usaco2006 Nov]Fence Repair 切割木板的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ1724: [Usaco2006 Nov]Fence Repair 切割木板

bzoj1724: [Usaco2006 Nov]Fence Repair 切割木板(贪心+堆)

bzoj1726[Usaco2006 Nov]Roadblocks第二短路*

[BZOJ1725][Usaco2006 Nov]Corn Fields牧场的安排

[BZOJ] 1660: [Usaco2006 Nov]Bad Hair Day 乱发节

BZOJ 1660 [Usaco2006 Nov]Bad Hair Day 乱发节