P3765k個最小和

2021-08-08 10:47:21 字數 1008 閱讀 6431

問題描述

有k個整數陣列,各包含k個元素,從每個陣列中選取乙個元素加起來,可以得到k^k個和,求這些和中最小的k個值。

輸入格式

第一行,乙個整數k(k<=500)

接下來k行,每行k個正整數(<=1000000)

輸出格式

一行,k個有小到大排列的整數,表示最小的k個和

樣例輸入 1

3 1 8 5

9 2 5

10 7 6

樣例輸出 1

9 10 12

樣例輸入 2

2 1 1

1 2樣例輸出 2

2 2多路合併水題

顯然之前所得k個最小和加上此時陣列的最小和為當前最小和。

排序後能得到

1.1>1.2>1.3…

2.1>2.2>2.3..

3.1>3.2>3.3..

k.1>k.2>k.3..

所以先將1-k進隊後依次討論用優先佇列維護

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define inf 1e9

#define pr cout<<

priority_queueq;

int temp[505],a[505];

int k,i,j;

void work()

int cnt=0;

for(i=1;i<=k;i++)

}for(i=k;i>=1;i--) a[i]=q.top(),q.pop();

}int main()

for(i=1;i<=k;i++) cout

<" ";

}

NKOJ3765 k個最小和

問題描述 有k個整數陣列,各包含k個元素,從每個陣列中選取乙個元素加起來,可以得到k k個和,求這些和中最小的k個值。輸入格式 第一行,乙個整數k k 500 接下來k行,每行k個正整數 1000000 輸出格式 一行,k個有小到大排列的整數,表示最小的k個和 樣例輸入 1 3 1 8 5 9 2 ...

uva11997 k個最小和

乙個k k的矩陣,每行選取乙個數相加則得到乙個和,求最小的前k個和。k 750 已知前m行最小的前k個和d 1 d k 則前m 1行最小的前k個和都必定是d i i k a m 1 x 排序,列舉x,用優先佇列處理。學會了個小技巧 node形式的優先佇列,想直接插入元素組成node struct n...

uva11997 k個最小和

乙個k k的矩陣,每行選取乙個數相加則得到乙個和,求最小的前k個和。k 750 已知前m行最小的前k個和d 1 d k 則前m 1行最小的前k個和都必定是d i i k a m 1 x 排序,列舉x,用優先佇列處理。學會了個小技巧 node形式的優先佇列,想直接插入元素組成node struct n...