博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
序列合并求前K小项 POJ2442
阅读量:4879 次
发布时间:2019-06-11

本文共 864 字,大约阅读时间需要 2 分钟。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 7 using namespace std; 8 9 priority_queue
pq;10 int an[3100];11 int bn[3100];12 13 int main()14 {15 int T;16 cin>>T;17 while(T--)18 {19 int m,n;20 scanf("%d%d",&m,&n);21 for(int i=0;i
=0;i--)52 cout<<" "<
View Code

解题步骤:

1.将第一序列读入data1向量中,并按升序排序。

2.将数据读入data2向量中,并按升序排序。

    将data2[0] + data1[i] ( 0<=i<=n-1)读入dataq向量中

    用make_heap对dataq建堆。

    然后data2[1] + data1[i] (0<=i<=n-1),如果data2[1] + data1[i]比堆dataq的顶点大,则退出,否则删除

    堆的顶点,插入data2[1] + data1[i]。然后是data2[2],...data2[n - 1]

 3.将dataq的数据拷贝到data1中,并对data1按升序排序

 4.循环2,3步,直到所有数据读入完毕。

 5.打印data1中的数据即为结果。

按此方法,每次只需和当前最小的K项中最大的那项比较就行,而不用比较n^m次

转载于:https://www.cnblogs.com/wsruning/p/4736613.html

你可能感兴趣的文章
思维的惰性
查看>>
2018-2019-2 网络对抗技术 20165115 Exp3 免杀原理与实践
查看>>
【Android】学习记录<1> -- 初识ffmpeg
查看>>
定位页面元素的位置
查看>>
关于IAsyncResult接口的CompletedSynchronously属性
查看>>
Python:一篇文章掌握Numpy的基本用法
查看>>
序列化与ArrayList 的elementData的修饰关键字transient
查看>>
学习进度17
查看>>
编译原理——算符优先分析文法(附源代码)
查看>>
jboss的启动过程
查看>>
渲染部分
查看>>
力扣——所有可能的路径
查看>>
关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别
查看>>
解密module_init幕后的故事
查看>>
9个移动网站优化的最佳实践
查看>>
李昌镐:苍老的青春(转载) 韩国围棋职业棋手
查看>>
JPA 使用报Named query not found错误
查看>>
FTP命令使用详解
查看>>
walmart weekly sales
查看>>
面试题07_用两个栈实现队列——剑指offer系列
查看>>