【优先队列】:poj2442,Sequence

博客介绍了如何运用优先队列(大顶堆)解决poj2442题目的问题。当给定一个m行n列的数矩阵,需要找出相加和最小的n个sequence组合时,通过逐行处理并利用优先队列优化算法,避免了全组合的计算。首先,对每一行进行排序,然后从第一行开始,将元素与前一行的n个最小值组合,放入优先队列。在后续行中,若新组合的和小于优先队列的最大值,替换之,确保始终保留n个最小和。最终,优先队列中将包含n个最小区间的和。
摘要由CSDN通过智能技术生成


题目大意是:m行n列的一个数矩阵,每行抽一个数,可以同列,那么有n^m种sequence组合,在这些sequence中,找出:m个元素相加的和 最小的n个sequence组合(输出这n个最小值)。


这个题非常有意思,解题思路如下:

1)对于只有一行,直接输出从小到大的排序。

2)对于大于等于2行,我们采用一行一行计算n个最小值的思路,这样说起来有些抽象;具体的,如果我们只考虑从第一行中抽出1个数字,则n个sequence分别就是第一行的n个数字;现在考虑同时从第二行中抽取1个数字(这时,每个sequence长度为2),这样,第二行的每一个数字和第一行的每一个数字有一个全组合(共n*n个),我们应该选择【这n*n个组合中】和最小的n个sequence,但我们注意到一点,如果我们对第二行的数字从小到大排序(第一行的n个值也是从小到大排好序的&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值