题目链接:https://uva.onlinejudge.org/external/119/11997.pdf

题意:

k*k的矩阵,从每一行中选一个元素加起来,可以得到 kk个和,求前 k 个最小值。

分析:

先把表头都放到优先队列中,每出一个,就从相应的表后面加一个。

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 const int maxn = 755;
 6
 7 int A[maxn][maxn];
 8
 9 struct Item {
10     int s,b;
11     bool operator < (const Item& rhs) const {
12         return s > rhs.s;
13     }
14 };
15
16 void merga(int* A,int* B,int* C,int n) {
17     priority_queue<Item> Q;
18     for(int i=0;i<n;i++) {
19         Q.push((Item){A[i]+B[0],0});
20     }
21
22     for(int i=0;i<n;i++) {
23         Item item = Q.top();Q.pop();
24         C[i] = item.s;
25         int b = item.b;
26         if(b+1<n) Q.push((Item){item.s-B[b]+B[b+1],b+1});
27     }
28 }
29
30 int main(int argc, char** argv) {
31     int n;
32     while(scanf("%d",&n)!=EOF) {
33         for(int i=0;i<n;i++) {
34             for(int j=0;j<n;j++) {
35                 scanf("%d",&A[i][j]);
36             }
37             sort(A[i],A[i]+n);
38         }
39
40         for(int i=1;i<n;i++) {
41             merga(A[0],A[i],A[0],n);
42         }
43
44         printf("%d",A[0][0]);
45         for(int i=1;i<n;i++) {
46             printf(" %d",A[0][i]);
47         }
48         puts("");
49
50     }
51     return 0;
52 }

View Code

转载于:https://www.cnblogs.com/TreeDream/p/6612196.html

Uva 11997 多路归并相关推荐

  1. uva 11997 K Smallest Sums 优先队列处理多路归并问题

    题意:K个数组每组K个值,每次从一组中选一个,共K^k种,问前K个小的. 思路:优先队列处理多路归并,每个状态含有K个元素.详见刘汝佳算法指南. 1 #include<iostream> ...

  2. 多路归并排序_1600W整数排序多路归并

    Merge Sort 问题描述 Go 语言实现一个16M的整数(int64)多路归并的数组排序 思路 将待排序数组分成多个组,利用多个goroutine实现各个组的并行排序:然后通过Heap(最小堆) ...

  3. POJ1018贪心(多路归并的想法)

    题意:      有n个服务器,每个服务器都要安装网线(必须也只能安装一个),然后每个服务器都有mi种选择网线的方式,每种方式两个参数,一个是速度b,另一个是价钱p,然后让你找到一个最大的比值 min ...

  4. LA3135简单多路归并(优先队列)

    题意:       有N个任务,每个任务都有自己的时间间隔(就是每t秒请求执行一次)和任务id,这n个任务公用一个cpu,每次我们都执行时间靠前的,如果相同时间内有多个任务,就执行任务id小的,要求模 ...

  5. UVA11997求前k个和,多路归并问题

    题意:      给你一个二维矩阵,n*n的,每次从每一行中拿出来一个,然后加起来组成一个和,一共可以得到n^n个和,要求求出这n^n个和中最小的那n个和. 思路:      多路归并问题,先说下多路 ...

  6. 77. Leetcode 1439. 有序矩阵中的第 k 个最小数组和 (堆-技巧二-多路归并)

    技巧二 - 多路归并其实这个技巧,叫做多指针优化可能会更合适,只不过这个名字实在太过朴素且容易和双指 针什么的混淆,因此我给 ta 起了个别致的名字 - 多路归并.多路体现在:有多条候选路线.代码上, ...

  7. 算法 {多路归并,二路归并,第K大数}

    catalog 二路归并 归并操作--并集 暴力 二叉树 归并操作--元素复合 暴力 二叉树 堆维护 行分组 多路归并 归并操作--并集 归并操作--元素复合 例题 二路归并 多路归并 是 二路归并 ...

  8. 多路归并问题(多个有序表合为一个有序表)

    给定k个有序表(不妨假设均为升序),求这k个有序表中最小的n个元素,这类问题称为多路归并问题. 对于这类问题,考虑先取出每个有序表中的最小的元素,在取出的这些元素中的最小值即为所有元素的最小值,必然要 ...

  9. [HIT-DB-Lab3] 数据库的多路归并算法及其实现

    HIT战德臣老师的数据库lab3, 目的是用代码实现一个两阶段多路归并算法, 处理数据, 具体要求如下 目的 思路 先看看ppt上有关内容: 两趟多路归并算法其实不难理解, 如果你的内存足够大, 你可 ...

最新文章

  1. SAP WM 物料主数据里的Palletization Data
  2. LSMW批处理使用方法(13)_步骤18
  3. smarty5变量修改器
  4. LOAM_velodyne学习(一)
  5. argument type mismatch怎么解决_怎么做好GMAT 的CR?
  6. X_Forwarded_for 获得真实IP
  7. Linux学习总结(76)—— Shell 脚本日志技巧
  8. 11_条件随机场CRF2_统计学习方法
  9. 洛谷2661 信息传递 三倍经验?
  10. 制作一个可安装、可启动、可停止、可卸载的Windows service
  11. 【一分钟知识】依存句法分析
  12. htmlspecialchars_decode 与 html_entity_decode
  13. 微信支付之H5页面WAP端接入
  14. 重写与重载(摘抄笔记)
  15. HDU 5294 Tricks Device 最短路最小割 -
  16. 上载人生(数字天堂)
  17. 中国超级计算机之最,中国超级计算机神威太湖之光世界最快,且总量排名榜单第一...
  18. 强化学习——day31 多臂老虎机MAB的代码实现(Python)
  19. AD中怎样修改原理图图纸大小
  20. React之HOC(高阶组件)

热门文章

  1. Pure-FTPd服务器
  2. Linux中逻辑卷相关知识简介
  3. c语言程序与设计苏小红,c语言程序设计苏小红
  4. date比较大小 mybatis_MyBatis版本升级导致OffsetDateTime入参解析异常问题复盘
  5. 该不该放弃嵌入式,单片机这条路?
  6. 【Java】牛客网 删除链表中重复的结点
  7. C语言----字符串左旋
  8. 链表的基本操作(c++实现)
  9. android的UDC功能,Android实现搜索历史功能
  10. 【数学专题】矩阵乘法