(優先佇列)P1631 序列合併

2021-09-01 13:29:09 字數 501 閱讀 8135

有兩個長度都是n的序列a和b,在a和b中各取乙個數相加可以得到n^2

個和,求這n^2個和中最小的n個。

ai <= 1e9, bi <= 1e9, n <= 1e5.

直接暴力用優先佇列存前n個,如果出現第乙個比當前最大值還大的值時退出迴圈保障複雜度

#includeusing namespace std;

const int maxn = 1e5 + 10;

typedef long long ll;

priority_queue< ll, vector, less> q;

int a[maxn];

int main()

else break;

}} }

int pos = 0;

while(!q.empty())

for(int i = 0; i < n; i++) cout << a[i] << " ";

}

優先佇列 洛谷 P1631 序列合併

有兩個長度都是n的序列a和b,在a和b中各取乙個數相加可以得到n 2n2個和,求這n 2n2個和中最小的n個。輸入格式 第一行乙個正整數n 第二行n個整數a iai 滿足a i le a ai ai 1 且a i le 10 9ai 109 第三行n個整數b ibi 滿足b i le b bi bi...

P1631 序列合併

做法 將 a 和 b 都從小到大排一遍序。然後組成這樣乙個矩陣 a1 b1 a1 b2 a1 b3 a1 bn a2 b1 a2 b2 a2 b3 a2 bn a3 b1 an b1 an b2 an b3 an bn 正確性 我們先把每行的頭扔進堆裡,每行的頭是每行中的最小值,所以這樣我們能在堆裡...

P1631 序列合併

有兩個長度都是n的序列a和b,在a和b中各取乙個數相加可以得到n 2個和,求這n 2個和中最小的n個。輸入格式 第一行乙個正整數n 第二行n個整數ai,滿足ai ai 1且ai 10 9 第三行n個整數bi,滿足bi bi 1且bi 10 9.資料規模 對於50 的資料中,滿足1 n 1000 對於...