P1631 序列合併 (貪心)

2021-10-07 22:41:28 字數 1079 閱讀 3565

題目鏈結

題面:

題解:a序列,b序列都是單調遞增的。

維護乙個優先佇列。

對於b序列的每個值 b [ i ] , 我們維護當前a序列加到第幾個了。

如果當前出隊的是對於 b [ i ] , 加上的 a [ j ] ,那麼我們就再將 b [ i ] + a [ j + 1 ] 壓入佇列。

**:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define llu unsigned ll

#define ld long double

#define iu unsigned int

using

namespace std;

const

int inf=

0x3f3f3f3f

;const ll lnf=

0x3f3f3f3f3f3f3f3f

;const

double dnf=

1e15

;const

double eps=

1e-8

;const

int maxn=

100100

;const

int mod=

20100403

;int a[maxn]

,b[maxn]

,cnt[maxn]

;priority_queue

int,

int>

>q;

intmain

(void

)for

(int i=

1;i<=n;i++

)return0;

}

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 對於...

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 10 9 第三行n個整數 b ibi 滿足 b i ...