Codevs No 1245 最小的N個和

2022-08-22 22:00:12 字數 863 閱讀 7215

2016-05-31 18:52:15

題目大意:

給兩個等長數列,各取乙個數求和,找到最小的n組

解法:堆優化的大暴力

直接列舉所有可能在最大堆中更新,刪除最大組合

需要注意的地方:

1.如果任何乙個加數大於等於堆頂元素,break

2.如果兩者之和已經大於等於堆頂元素,break

1

//最小的n個和 (codevs no.1245)2//

堆(優先佇列)

3 #include4 #include5 #include6

using

namespace

std;

7const

int maxn=100010

;8 priority_queue q;

9int

n;10

intx[maxn];

11int

y[maxn];

12int

ans[maxn];

13int

main()

1420

for(int j=1;j<=n;j++)

2124 sort(x+1,x+n+1

);25 sort(y+1,y+n+1

);26

for(int i=1;i<=n;i++)q.push(x[i]+y[i]);

27for(int i=1;i<=n;i++)

2837}38

for(int i=1;i<=n;i++)

3943

for(int i=n;i>=1;i--)

4447

return0;

48 }

1245 最小N個數的和

題目就簡單的貼上以下 題目描述 description 有兩個長度為 n 的序列 a 和 b,在 a 和 b 中各任取乙個數可以得到 n 2 個和,求這n 2 個和中最小的 n個。輸入描述 input description 第一行輸入乙個正整數n 第二行n個整數ai 且ai 10 9 第三行n個整...

Wiki OI 1245 最小的N個和

演算法與思路 k路歸併 堆 優先佇列 k路歸併具體請參考劉汝佳 演算法競賽入門經典訓練指南 p189 題目要求從兩個長度為n的數列中各取出一數相加,可得到n n個和,輸出這些和公升序的前n項 由於資料太大,不能通過先求和再排序的方式來求解,這個時候就要用到堆了 首先將a,b兩陣列排序,然後將a i ...

codevs1245 最小的N個和

題目描述 description 有兩個長度為 n 的序列 a 和 b,在 a 和 b 中各任取乙個數可以得到 n 2 個和,求這n 2 個和中最小的 n個。輸入描述 input description 第一行輸入乙個正整數n 第二行n個整數ai 且ai 10 9 第三行n個整數bi,且bi 10 ...