定義乙個priority_queue的方法為: priority_queue name;
//type通常為結構體
其中,type可以是任何基本型別或者容器,name為優先隊 列的名字。 和queue不一樣的是,priority_queue沒有front()和back(), 而只能通過top()或pop()訪問隊首元素(也稱堆頂元素),也 就是優先順序最高的元素。
typedef
long
long ll;
struct sa
; ll a[
400005
],b[
400005];
bool
operator
<
(const sa &a,
const sa &b)
priority_queue佇列
大根堆:從大到小排列。 小根堆:從小到大排列。 優先佇列就是堆,也可以自己手寫堆。 //小根堆的寫法 priority_queuevis; //大根堆的寫法 priority_queuevis;
當就是1個型別,可以這樣直接寫; 也可以用結構題。
1.合併果子-優先佇列 nefu 1688
本題是典型的使用優先佇列的題
#include
using
namespace std;
int n;
int x,ans;
int y2;
priority_queue<
int,vector<
int>
,greater<
int>
>q;
intmain()
while
(q.size()
>1)
cout<
return0;
}
2.合成隕石-優先佇列 nefu 355
本題與第一題不同的是多組輸入,記得初始化即可
#include
using
namespace std;
int n;
int x,ans;
priority_queue<
int,vector<
int>
,greater<
int>
>q;
intmain()
ans=0;
//記得初始化
while
(q.size()
>1)
cout<
q.pop();
//初始化
}return0;
}
3.買飯-優先佇列 nefu 1537
本題注意結構體自定義比較的方法
#include
using
namespace std;
int n;
int t;
double ans1,ans2;
struct que
;bool
operator
<
(const que &s1,
const que &s2)
priority_queue
>q;
intmain()
);}while
(!q.
empty()
)printf
("%.2lf\n"
,ans1/
(1.0
*n))
;return0;
}
4.堆-優先佇列 nefu 1692
基本操作,很簡單的題
#include
using
namespace std;
priority_queue<
int,vector<
int>
,greater<
int>
>q;
int n;
//n次操作
intmain()
if(x==2)
cout<
top(
)<
if(x==3)
q.pop();
}return0;
}
5.瑞瑞的木板-優先佇列 nefu 1691
與第一題類似
#include
using
namespace std;
priority_queue<
int,vector<
int>
,greater<
int>
>q;
int n;
//木板數量
int x;
long
long ans1;
intmain()
while
(q.size()
>1)
cout<
return0;
}
6.序列合併-優先佇列 nefu 1689
詳細題解如下
本題我應該一開始就聽題目用scanf ,我用cin就一直tle
#include
using
namespace std;
int n,a[
400005
],b[
400005];
struct lay
;bool
operator
<
(const lay &s1,
const lay &s2)
priority_queue
>q;
intmain()
);for(
int i=
1;i<=n;i++))
;}return0;
}
7.桐桐的新聞系統-優先佇列 nefu 1690
#include
using
namespace std;
char ch[10]
;int id,t,k;
//int r1,r2;
struct lay
;bool
operator
<
(const lay &s1,
const lay &s2)
priority_queue
>q;
intmain()
);} cin>>k;
//執行k次指令
for(
int i=
1; i<=k; i++))
;}return0;
}
大一寒假集訓(8) 佇列
佇列的定義 佇列就是允許在一端進行插入,在另一端進行刪 除的線性表。允許插入的一端稱為隊尾,通常用乙個 隊尾指標r指向隊尾元素,即r總是指向最後被插入的 元素 允許刪除的一端稱為隊首,通常也用乙個隊首 指標f指向排頭元素的前面。初始時f r 0 佇列的基本操作 1 初始化佇列 queue int v...
大一寒假集訓4 動態規劃
個人對dp的理解 記憶化,從小到大,先求出小問題的最優解,然後狀態轉移逐步求出原問題的解。遞推是神,des。使用dp前提 步驟 確定的子問題和求狀態轉移方程的切入點 對於題目中給出的步驟,明示的,比如上下移動的規則,字串的增刪改。暗示的,揹包問題的裝或不裝,裝乙個或裝多個。注意的點 1 空間不夠可以...
2020大一寒假ACM培訓 (優先佇列篇)
優先佇列是一種具有受限訪問操作的儲存結構,元素可以以任意順序進入優先佇列,一旦元素在優先佇列容器中,出隊操作將出佇列中優先順序最高的元素。可以理解為元素進入優先佇列自動排序 構建 priority queue int,vector int greater int s 公升序排列 priority q...