優先佇列 水題

2021-06-21 14:42:47 字數 2444 閱讀 4895

看了優先佇列的基礎用法,就做幾道題認識一下,就先做了幾道水題。。。

題目大意:求一列數中的第k大個數,其中k值不變。

解題思路:k值不變,故只需要維護佇列中後k大個數即可,詢問時在top()位置的數就是第k大,**如下:

#include#include#include#includeusing namespace std;

int main()

else

printf("%d\n",que.top());

}while(!que.empty())//每次結束清空佇列

que.pop();

}return 0;

}

題目大意:給你一串由大寫字母和空格(下劃線表示)組成的字串,問你八字節編碼佔的空間與哈夫曼編碼佔的空間及他們的比值;

解題思路:利用哈夫曼編碼的原理,將出現頻率最小的詞放在佇列的頂端,每次出隊相加再入隊,直到佇列中只有乙個元素為止;**如下:

#include#include#include#includeusing namespace std;

int main()

sum=t*8;ans=t;c=0;

for(int i=0; i<27; i++)

if(hash[i])

if(c>1)

}while(!que.empty())//清空佇列

que.pop();

printf("%d %d %.1lf\n",sum,ans,sum*1.0/ans);

}return 0;

}

題目大意:有n次操作和k個醫生,醫生看病有優先順序,編號大的優先順序高,每個病人可以選擇醫生,現在當輸入in x y,表示該病人的醫生編號為x,該病人優先順序為y,輸入out x時,詢問x醫生診斷完的病人的編號,輸入次序為病人編號;

#include#include#include#include#includeusing namespace std;

struct node

};priority_queue< node > q1,q2,q3;

char s[5];

int cnt=1;

void init()//初始化

int main()

};priority_queue< node > q[4];

char s[5];

int cnt;

void init()//初始化

int main()

else

if(flog)

printf("%s %d\n",ans.c,ans.v);

else

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

return 0;

}

題目大意:給你一條路,在路上有n個石頭,如果遇見第奇數個石頭,則向前扔,如果遇見第偶數個石頭,則跳過繼續向前,如果在同一位置有多個石頭,則我們規定他先遇見能向前扔的距離小的石頭,問最遠的石頭距離出發點多遠?

解題思路:用優先佇列把所有石子資訊存起來,接下來就是訪問和更新的問題了,**如下:

#include#include#include#include#includeusing namespace std;

struct node

bool cnt=true;

while(!q.empty())

else

cnt=true;

}printf("%d\n",t.id);

}return 0;

}

題目大意:軍隊體檢,有n個排,有m個醫生,乙個醫生最多一天能看num個人,醫生先從人數較多的排看起,乙個排的士兵只能由乙個醫生看,問最少需要多少天看完?

緊接著n個整數,表示每個排的人數。

解題思路:首先對每個排的人數排序,然後按優先順序的順序看,具體**如下:

#include#include#include#include#includeusing namespace std;

priority_queue< int,vector,greater> q;//從小到大的優先佇列

int s[1000005];

int main()

int ans;

while(!q.empty()) //隊尾的即為最長用時

printf("%.3lf\n",ans*1.0/num);

}return 0;

}

基礎的先這麼多。。。

hrbust 2223水題 優先佇列

水題 time limit 500 ms memory limit 32768 k total submit 407 138 users total accepted 153 99 users rating special judge no description 因為是有關於接水的問題,便簡稱為水...

51 nod 1596 搬貨物 優先佇列水題)

1596搬貨物 基準時間限制 1秒 空間限制 131072kb 分值 10難度 2級演算法題 收藏關注 取消關注 現在有n個貨物,第i個貨物的重量是 2 w i 每次搬的時候要求貨物重量的總和是乙個2的冪。問最少要搬幾次能把所有的貨物搬完。樣例解釋 1,1,2作為一組。3,3作為一組。input 單...

優先佇列模板題

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...