時間限制: 3 sec 記憶體限制: 256 mb
提交: 638 解決: 65
[提交][狀態][討論版][命題人:外部匯入]有兩個長度為n的序列a和b,在a和b中各任取乙個數相加可以得到n2個和,求這n2個和中最小的n個。
第一行輸入乙個正整數n(1<=n<=100000);
第二行n個整數ai且ai<=109;第三行n個整數bi且bi<=109。
輸出僅一行,包含n個整數,從小到大輸出這n個最小的和,相鄰數字之間用空格隔開。
51 3 2 4 5
6 3 4 1 7
2 3 4 4 5
/*堆排序(優先佇列)
* 維護 n 個最小的數字
* 別忘記排序
*/#include
#include
#include
#include
using
namespace
std ;
#define maxn 110000
intn ;
intnum1[maxn] , num2[maxn] ;
priority_queue
min_num ;
intresult[maxn] ;
intmain()
for(int j=1 ; j<=n ; j++)
sort(num1+1 , num1+n+1
) ;
sort(num2+1 , num2+1+n) ;
for(int i=1 ; i<=n ; i++)
for(int i=2 ; i<=n ; i++)
else}}
for(int i=1 ; i<=n ; i++)
for(int i=n ; i>=1 ; i--)
return0;
}
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。輸出...
minval 優先佇列
思路就是先將兩個陣列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 所以後面的就可以省略了,不然會...
優先佇列《堆》
1.模型 兩個基本操作 insert等價enqueue deletemin刪除最小者 dequeue 2.簡單的實現 1 簡單鍊錶 遍歷刪除min或者排序刪除min 2 使用二叉查詢樹。反覆除去min會使得樹不平衡,並且bst還支援許多不需要的操作。3.二叉堆 優先佇列的實現普遍使用二叉堆,堆有兩個...