priority queue 優先佇列)

2021-07-04 04:34:04 字數 1743 閱讀 1941

佇列:先輸入先輸出

優先佇列使用方法:

標頭檔案:

#include

using namespace std;

宣告方法:

1.普通方法:priority_queueq;//下劃線不可漏,預設從大到小輸出隊

2.結構體宣告方式:

struct node

int x,y;

frinend bool operator < (node a,node b)//  <  ,此符號固定,若想要改變輸出順序,可改函式內部符號與內容

return a.x>b.x;//按x的大小,從小到大輸出隊

}vt;

priority_queueq;

自定義優先順序:

priority_queue,greater>q;//vector為容器,按從小到大順序輸出隊

priority_queue,less>q;//按從大到小順序輸出隊

基本操作:

push(x) 將x壓入佇列的末端

empty() 如果隊列為空返回真

pop() 刪除對頂元素

size() 返回優先佇列中擁有的元素個數

top() 返回優先佇列對頂元素

例題:

/*hdu--1509*/

#include#include#includeusing namespace std;

struct node

vt;bool operator < (node a,node b)

return a.y>b.y; }

priority_queueq;//定義乙個按結構體中y的大小從小到大輸出

int main()

} else if(strcmp(t,"get")==0)

else printf("empty queue!\n");

} k++;

} return 0;

}

/*hdu--1896(stones)--優先佇列*/

#include#includeusing namespace std;

struct stu

}zt,vt;

priority_queueq;

int main()

k++;

}printf("%d\n",sum);

} return 0;

}// the start point 是 sempr一開始出發的點

/*nyoj--757

分析:你首先要對日期進行排序,要是沒有重複的日期就好了,一天乙個,這肯定掛不了科啊!。有也沒事,先按日期從小到大,有重複日期的,按分值的從小到大排序。

排好後,我們本著一天乙個的原則,當遇到重複日期的時候就要有所取捨了,那肯定是不要分值少的啊,所以就和前面最小的比較,看哪個更小,就不複習了分數不要了!

不要的分數加起來就是最小的了!這個題就是要利用優先佇列了!因為它能自動排序,省下不少事!*/

#include#include#includeusing namespace std;

struct stu

vt[2003];

int cmp(stu a,stu b)

for(i=0;ix)

else sum+=vt[i].s;}}

printf("%d\n",sum);

} return 0;

}

優先佇列 priority queue

優先佇列 是一種抽象資料型別,行為有些像佇列,但是他不是先進先出型佇列 先出優先佇列的元素是佇列中優先順序最高的元素。就像 急診病人插隊 優先佇列的標頭檔案也是 用 priority queuepq 來宣告。這個pq是乙個越小的整數優先順序越低的優先佇列。出隊元素不是先進隊的元素,出隊的方法由que...

優先佇列 PriorityQueue

import queue q queue.priorityqueue q.put 1 新增元素 q.get 刪除元素 python的優先佇列基於最小堆實現。heap 堆 是乙個除了底層節點外的完全填滿的二叉樹,底層可以不完全,左到右填充節點。而最小堆意味著,任一非終端節點的資料值均不大於其左子節點和...

優先佇列 Priority Queue

堆是電腦科學中一類特殊的資料結構的統稱。堆通常是乙個可以被看做一棵樹的陣列物件。在佇列中,排程程式反覆提取佇列中第乙個作業並執行,因為實際情況中某些時間較短的任務將等待很長時間才能結束,或者某些不短小,但具有重要性的作業,同樣應當具有優先權。堆即為解決此類問題設計的一種資料結構。堆是具有以下性質的完...