優先佇列的學習記錄--例題: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;
}
相關文章
- Redis 佇列學習記錄Redis佇列
- PHP優先佇列PHP佇列
- php使用佇列 SplQueue類學習記錄PHP佇列
- Laravel 佇列 --- database 驅動(今天剛學習了佇列,記錄下筆記)Laravel佇列Database筆記
- STL 優先佇列 用法佇列
- 淺談優先佇列佇列
- 堆與優先佇列佇列
- 優先佇列的比較器佇列
- 優先佇列和堆排序佇列排序
- leetcode621——優先佇列的思路LeetCode佇列
- 01揹包優先佇列優化佇列優化
- 佇列 優先順序佇列 python 程式碼實現佇列Python
- 棧,佇列,優先順序佇列簡單介面使用佇列
- Laravel佇列相關問題記錄Laravel佇列
- NO GAME NO LIFE(優先佇列/最小堆)GAM佇列
- 封裝優先順序佇列封裝佇列
- 《資料結構與演算法分析》學習筆記-第六章-優先佇列資料結構演算法筆記佇列
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- STL優先佇列最小堆最大堆佇列
- 堆、堆排序和優先佇列的那些事排序佇列
- Facebook的分散式優先順序佇列FOQS分散式佇列
- 學習資料結構 - 深度優先搜尋 DFS 記錄資料結構
- 演算法面試(三) 優先佇列演算法面試佇列
- 二叉堆實現優先佇列佇列
- 手擼優先佇列——二叉堆佇列
- C++ STL 優先佇列 (priority_queue)C++佇列
- .NET 6 優先佇列 PriorityQueue 實現分析佇列
- Java優先順序佇列DelayedWorkQueue原理分析Java佇列
- codeforces round 974(div.3)E(優先佇列實現dijstra演算法,devc++的優先佇列用greater報錯)佇列JS演算法devC++
- 最詳細版圖解優先佇列(堆)圖解佇列
- 【堆】【優先佇列】[NOIP2004]合併果子佇列
- 8.13(優先佇列貪心維護+打表找規律+對頂堆優先佇列+DFS減枝+貪心dp)佇列
- 【Dijkstra演算法】未優化版+優先佇列優化版演算法優化佇列
- 2.1資料結構學習筆記--佇列資料結構筆記佇列
- RabbitMQ 學習筆記 -- 12 死信佇列 DLX + TTL 方式實現延遲佇列MQ筆記佇列
- CodeForces - 960B:Minimize the error(優先佇列+貪心)Error佇列
- Sunscreen POJ - 3614(防曬油) 貪心-優先佇列佇列
- [USACO 2009 Feb Gold] Fair Shuttle (貪心+優先佇列)GoAI佇列