優先佇列的學習記錄--例題:Expedition(POJ2431)
優先佇列的學習記錄--例題:Expedition--POJ2431
首先,什麼是優先佇列呢?
能夠完成下列操作的資料結構叫做優先佇列
□ 插入一個數值
□ 取出最小的數值(獲得數值,並且刪除)
當然,堆也能夠實現以上操作,但STL裡的priority_queue已經幫我們實現堆了,我們可以直接拿來使用。以下是一些操作的簡單實用
priority_queuepque //優先佇列的宣告
pque.push(x) //優先佇列的插入 插入一個整型的變數x
pque.top() //讀取優先佇列中最大的變數
pqie.pop() //刪除優先佇列中最大的變數
下面是一些實用priority的簡單例子:
#include<iostream>
#include<queue>
using namespace std;
priority_queue<int>pque; //宣告
int main()
{
pque.push(3); //優先佇列的插入 插入一個整型的變數3
pque.push(5); //優先佇列的插入 插入一個整型的變數5
pque.push(1); //優先佇列的插入 插入一個整型的變數1
while(!pque.empty()){ //判空
cout<<pque.top()<<" "; //讀取最大的元素
pque.pop(); //刪除最大的元素
}
return 0;
}
下面來個例題:
Expedition–POJ2431
你需要駕駛一輛卡車行駛L單位距離。最開始時,卡車上有Р單位的汽油。卡車每開1單位距離需要消耗Ⅰ單位的汽油。如果在途中車上的汽油耗盡,卡車就無法繼續前行,因而無法到達終點。在途中一共有N個加油站。第i個加油站在距離起點A;單位距離的地方,最多輸出最少的加油次數,否則輸出-1。
L限制條件
.1≤N≤10000
.1≤L≤1000000,1≤P≤1000000
.1≤A<=L,1≤B≤100
可以給卡車加B;單位汽油。假設卡車的燃料箱的容量是無限大的,無論加多少油都沒有問題。
那麼請問卡車是否能到達終點?如果可以,最少需要加多少次油?如果可以到達終點,輸出最少的加油次數,否則輸出-1。
樣例
輸入
N= 4,L= 25,P = 10
A = {10,14,20,21}
B = {10,5,2,4}
輸出
2(在第1個和第2個加油站加油)
程式碼描述
#include<bits/stdc++.h>
using namespace std;
int n,l,p,pos,ans; //pos記錄當前位置
int a[10005],b[10005];
priority_queue<int>pque;
int main()
{
cin>>n>>l>>p;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
}
for(int i=1;i<=n;i++){
int d=a[i]-pos;
while(p-d<0){
if(pque.empty()){
cout<<"-1";
return 0;
}
p+=pque.top();
pque.pop();
ans++;
}
pque.push(b[i]);
pos=a[i];
p-=d;
}
cout<<ans;
return 0;
}
相關文章
- POJ2431 Expedition (優先佇列)佇列
- Redis 佇列學習記錄Redis佇列
- PHP優先佇列PHP佇列
- 堆--優先佇列佇列
- 優先佇列 (轉)佇列
- php使用佇列 SplQueue類學習記錄PHP佇列
- HDU 1026(優先佇列+BFS+前驅記錄)佇列
- 淺談優先佇列佇列
- STL 優先佇列 用法佇列
- 堆與優先佇列佇列
- 堆和優先佇列佇列
- Laravel 佇列 --- database 驅動(今天剛學習了佇列,記錄下筆記)Laravel佇列Database筆記
- 優先佇列的比較器佇列
- 堆——神奇的優先佇列(上)佇列
- 優先佇列的效能測試佇列
- 優先佇列和堆排序佇列排序
- 堆排序與優先佇列排序佇列
- Java優先佇列(PriorityQueue)示例Java佇列
- 01揹包優先佇列優化佇列優化
- MSMQ微軟訊息佇列的學習(先進先出)MQ微軟佇列
- 棧,佇列,優先順序佇列簡單介面使用佇列
- Redis實現任務佇列、優先順序佇列Redis佇列
- NO GAME NO LIFE(優先佇列/最小堆)GAM佇列
- 封裝優先順序佇列封裝佇列
- 二叉堆優先佇列佇列
- POJ 3253 Fence Repair 優先佇列AI佇列
- hdu5040 優先佇列+bfs佇列
- Laravel佇列相關問題記錄Laravel佇列
- 找最小的k個數(優先佇列)佇列
- 佇列 優先順序佇列 python 程式碼實現佇列Python
- 《資料結構與演算法分析》學習筆記-第六章-優先佇列資料結構演算法筆記佇列
- 演算法面試(三) 優先佇列演算法面試佇列
- STL優先佇列最小堆最大堆佇列
- STL醜數(set+優先佇列)佇列
- 【圖論】拓撲排序+優先佇列圖論排序佇列
- 1007(優先佇列)佇列
- POJ 1724 ROADS(優先佇列+spfa)佇列
- POJ 2051(最小堆/優先佇列)佇列