Uva 11997 多路归并
题目链接:https://uva.onlinejudge.org/external/119/11997.pdf
题意:
k*k的矩阵,从每一行中选一个元素加起来,可以得到 kk个和,求前 k 个最小值。
分析:
先把表头都放到优先队列中,每出一个,就从相应的表后面加一个。
![](/assets/blank.gif)
![](/assets/blank.gif)
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 多路归并相关推荐
- uva 11997 K Smallest Sums 优先队列处理多路归并问题
题意:K个数组每组K个值,每次从一组中选一个,共K^k种,问前K个小的. 思路:优先队列处理多路归并,每个状态含有K个元素.详见刘汝佳算法指南. 1 #include<iostream> ...
- 多路归并排序_1600W整数排序多路归并
Merge Sort 问题描述 Go 语言实现一个16M的整数(int64)多路归并的数组排序 思路 将待排序数组分成多个组,利用多个goroutine实现各个组的并行排序:然后通过Heap(最小堆) ...
- POJ1018贪心(多路归并的想法)
题意: 有n个服务器,每个服务器都要安装网线(必须也只能安装一个),然后每个服务器都有mi种选择网线的方式,每种方式两个参数,一个是速度b,另一个是价钱p,然后让你找到一个最大的比值 min ...
- LA3135简单多路归并(优先队列)
题意: 有N个任务,每个任务都有自己的时间间隔(就是每t秒请求执行一次)和任务id,这n个任务公用一个cpu,每次我们都执行时间靠前的,如果相同时间内有多个任务,就执行任务id小的,要求模 ...
- UVA11997求前k个和,多路归并问题
题意: 给你一个二维矩阵,n*n的,每次从每一行中拿出来一个,然后加起来组成一个和,一共可以得到n^n个和,要求求出这n^n个和中最小的那n个和. 思路: 多路归并问题,先说下多路 ...
- 77. Leetcode 1439. 有序矩阵中的第 k 个最小数组和 (堆-技巧二-多路归并)
技巧二 - 多路归并其实这个技巧,叫做多指针优化可能会更合适,只不过这个名字实在太过朴素且容易和双指 针什么的混淆,因此我给 ta 起了个别致的名字 - 多路归并.多路体现在:有多条候选路线.代码上, ...
- 算法 {多路归并,二路归并,第K大数}
catalog 二路归并 归并操作--并集 暴力 二叉树 归并操作--元素复合 暴力 二叉树 堆维护 行分组 多路归并 归并操作--并集 归并操作--元素复合 例题 二路归并 多路归并 是 二路归并 ...
- 多路归并问题(多个有序表合为一个有序表)
给定k个有序表(不妨假设均为升序),求这k个有序表中最小的n个元素,这类问题称为多路归并问题. 对于这类问题,考虑先取出每个有序表中的最小的元素,在取出的这些元素中的最小值即为所有元素的最小值,必然要 ...
- [HIT-DB-Lab3] 数据库的多路归并算法及其实现
HIT战德臣老师的数据库lab3, 目的是用代码实现一个两阶段多路归并算法, 处理数据, 具体要求如下 目的 思路 先看看ppt上有关内容: 两趟多路归并算法其实不难理解, 如果你的内存足够大, 你可 ...
最新文章
- SAP WM 物料主数据里的Palletization Data
- LSMW批处理使用方法(13)_步骤18
- smarty5变量修改器
- LOAM_velodyne学习(一)
- argument type mismatch怎么解决_怎么做好GMAT 的CR?
- X_Forwarded_for 获得真实IP
- Linux学习总结(76)—— Shell 脚本日志技巧
- 11_条件随机场CRF2_统计学习方法
- 洛谷2661 信息传递 三倍经验?
- 制作一个可安装、可启动、可停止、可卸载的Windows service
- 【一分钟知识】依存句法分析
- htmlspecialchars_decode 与 html_entity_decode
- 微信支付之H5页面WAP端接入
- 重写与重载(摘抄笔记)
- HDU 5294 Tricks Device 最短路最小割 -
- 上载人生(数字天堂)
- 中国超级计算机之最,中国超级计算机神威太湖之光世界最快,且总量排名榜单第一...
- 强化学习——day31 多臂老虎机MAB的代码实现(Python)
- AD中怎样修改原理图图纸大小
- React之HOC(高阶组件)