minval 優先佇列

2021-08-19 05:48:32 字數 626 閱讀 4656

思路就是先將兩個陣列sort一下,然後將a[0]+b[i]入隊,然後再去遍歷a 1-n,b 0-n的陣列,如果a[i]+b[j]小於q.top(),就更新佇列裡面的數,因為之前已經sort過了,如果a[i]+b[j]大於等於q.top(),那麼在b[j]之後的數也不會小於q.top(),所以後面的就可以省略了,不然會tle。因為佇列裡一直維護都是n個數,所以最後直接輸出就好了。

ac**:

#include #include #include #include #include using namespace std;

priority_queueq;

int n;

int a[100005],b[100005],c[100005];

int main()

else break; // 不能省略

}} int num = 0;

while(!q.empty())

for(int i=num-1;i>=0;i--)

return 0;

}

2269 minval(優先佇列 堆排序)

時間限制 3 sec 記憶體限制 256 mb 提交 638 解決 65 提交 狀態 討論版 命題人 外部匯入 有兩個長度為n的序列a和b,在a和b中各任取乙個數相加可以得到n2個和,求這n2個和中最小的n個。第一行輸入乙個正整數n 1 n 100000 第二行n個整數ai且ai 109 第三行n個...

zzuliOJ 2269 minval 優先佇列

有兩個長度為n的序列a和b,在a和b中各任取乙個數相加可以得到 n 2n 2 n2個和,求這n2個和中最小的n個。第一行輸入乙個正整數n 1 n 100000 第二行n個整數ai且 a i 1 09 ai 10 ai 1 09 第三行n個整數bi且 b i 1 09 bi 10 bi 1 09。輸出...

優先佇列(3道優先佇列問題)

優先佇列是一種十分強大的資料結構,它保持了一種動態的有序性,對於不斷改變有入隊的操作,而又需要某種最大或最小的操作的問題是再合適不過了,通常優先佇列的實現是由最小堆或者最大堆完成的,並通過堆排序保持佇列的有序性,模擬佇列的結構,在實際比賽中要寫乙個堆排序還是要一定的時間的,但是stl中queue容器...