Sequence
题目链接:http://dsalgo.openjudge.cn/binarytree/12/
- 总时间限制: 3000ms 内存限制: 65536kB
- 描述
-
给定m个数字序列,每个序列包含n个非负整数。我们从每一个序列中选取一个数字组成一个新的序列,显然一共可以构造出n^m个新序列。接下来我们对每一个新的序列中的数字进行求和,一共会得到n^m个和,请找出最小的n个和
- 输入
- 输入的第一行是一个整数T,表示测试用例的数量,接下来是T个测试用例的输入
每个测试用例输入的第一行是两个正整数m(0 < m <= 100)和n(0 < n <= 2000),然后有m行,每行有n个数,数字之间用空格分开,表示这m个序列
序列中的数字不会大于10000 - 输出
- 对每组测试用例,输出一行用空格隔开的数,表示最小的n个和
- 样例输入
-
1 2 3 1 2 3 2 2 3
- 样例输出
-
3 3 4
分析:
这个题用优先队列来处理。维护一个长度为n的优先队列,每次输入后都对前n个最小和进行更新,m-1次迭代后得到最终的前n个最小和。
优先队列内部是用堆来实现的,若是水平高的童鞋可以自己实现堆去试一下。
下面直接使用C++ STL的优先队列来完成工作。
关于优先队列可以参考:https://www.cnblogs.com/huashanqingzhu/p/11040390.html
关于sort排序函数参考:https://www.cnblogs.com/TX980502/p/8528840.html
AC代码如下:

1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <queue> 5 #include <algorithm> 6 using namespace std; 7 8 const int maxn = 2005; 9 int t,m,n,a[maxn],b[maxn]; 10 priority_queue<int> q;//利用a维护前n个最小和 11 12 int main() 13 { 14 scanf("%d",&t); 15 while(t--) { 16 scanf("%d%d",&m,&n); 17 for (int i = 0; i < n; ++i) scanf("%d",&a[i]);sort(a,a+n); //a存储前n个最小和 18 m--; 19 while(m--) { 20 for (int i = 0; i < n; ++i) scanf("%d",&b[i]);sort(b,b+n); 21 for (int i = 0; i < n; i++) q.push(a[i]+b[0]); //生成长度为n的优先队列 22 for (int i = 1; i < n; ++i) { //计算剩余的组合,并更新队列 23 int j; 24 for (j = 0; j < n; ++j) 25 if(b[i]+a[j]<q.top()) q.pop(),q.push(b[i]+a[j]);//a剪枝 26 else break; 27 if(j == 0) break;//b剪枝,b[i]+a[0]都不行,那b[i+1]+a[0]或b[i]+a[1]也不行 28 } 29 for (int i = n-1; i >= 0; i--) a[i] = q.top(),q.pop(); //为下次更新作准备 30 } 31 for (int i = 0; i < n; i++) printf("%d%c",a[i],i == n-1?'\n':' '); 32 } 33 return 0; 34 }
代码来自csdn:https://blog.csdn.net/xxiaobaib/article/details/78907588
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2017-06-17 7620:区间合并
2017-06-17 2011的n次方