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 }
View Code

代码来自csdn:https://blog.csdn.net/xxiaobaib/article/details/78907588

 

转载于:https://www.cnblogs.com/huashanqingzhu/p/11040709.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hadooprbac_rbac权限管理系统的学习

RGBA学习在web开发项目中,有些网页是公开给所有人访问的,但有些网页涉及了某些数据表的增删改查的操作,而某些操作,特别是增改删的操作是一些敏感操作所有需要给不同的用户添加不同的权限&#xff0c;那么问题来了来了,我们需要怎样设置数据表来分配不同权限呢&#xff1f;很显…

api过滤器_了解播放过滤器API

api过滤器随着Play 2.1的热销&#xff0c;很多人开始询问新的Play过滤器API。 实际上&#xff0c;API非常简单&#xff1a; trait EssentialFilter {def apply(next: EssentialAction): EssentialAction }本质上&#xff0c;过滤器只是一个执行一个动作并返回另一个动作的函数…

HTML5中的webSocket、ajax、http

本文原链接&#xff1a;https://cloud.tencent.com/developer/article/1115496 https://cloud.tencent.com/developer/article/1193011 webSocket与ajax、web 一、webSocket与ajax 1、ajax2、webSocket二、webSocket API 1、事件2、方法3、属性4、常量三、webSocket与HTTP四、w…

动态规划,背包问题

背包问题模型&#xff0c;背包问题是一类整数规划问题&#xff0c;叙述如下&#xff1a;设有n件物品&#xff0c;并且第i件物品的重量为&#xff0c;其价值为&#xff0c;而背包能承受的总重量是&#xff0c;问应如何选择这些物品&#xff0c;才可以使背包中所装物品的价值最大…

routing zuul_尚学堂0131之zuul的相关概念及如何性能调优

采用服务名称指定路由方式1.1使用服务名称指定路由的规则是什么&#xff1f;1.2需改配置文件&#xff0c;将路由规则修改为使用服务名称路由。通过服务名, service-id为服务名zuul:routes:E-Book-Product-Provider:path: /suibian/**service-id: E-Book-Product-Provider路由的…

实时通信:使用Spring Boot实现Websocket

在开发Web应用程序时&#xff0c;有时我们需要将服务器事件下推到已连接的客户端。 但是&#xff0c;HTTP并非旨在允许这样做。 客户端打开与服务器的连接并请求数据。 服务器不会打开与客户端的连接并推送数据。 为了解决此限制&#xff0c;建立了一种轮询模式&#xff0c;其…

CUDA10.1配置VS2017

目录 一 CUDA 安装 二 CUDA环境变量配置 三 CUDA配置VS2017 一 CUDA 安装 1.1 CUDA下载 网址&#xff1a;https://developer.nvidia.com/cuda-toolkit-archive 可以根据需要下载不同版本的CUDA安装包。 1.2 CUDA安装 1.2.1 双击下载的.exe文件安装 1.2.2 点击‘OK’ 1.2…

鸿蒙应用开发 常用组件与布局

简介 HarmonyOS ArkUI 提供了丰富多样的 UI 组件&#xff0c;您可以使用这些组件轻松地编写出更加丰富、漂亮的界面。在本篇 Codelab 中&#xff0c;您将通过一个简单的购物社交应用示例&#xff0c;学习如何使用常用的基础组件和容器组件。本示例主要包含&#xff1a;“登录”…

[数论]莫比乌斯反演1

索引 莫比乌斯反演1 定理莫比乌斯反演2 证明莫比乌斯反演3 技巧前言 本篇内容全部为定理&#xff0c;无证明 定义 莫比乌斯函数的符号为\(\mu\)&#xff0c;通俗的来讲\[ \mu(n) \left\{ \begin{matrix} 1 & n1\\ (-1)^k & n p_1p_2p_3\dots p_k\\ 0 & \text{其他…

怎么卸载光速头条_我用这三招,整理了桌面并且屏蔽了广告弹窗

这段时间&#xff0c;在用公司电脑工作时&#xff0c;有两个问题让我非常不爽。一是正处在专心工作中&#xff0c;突然桌面中间就弹出一个&#xff1a;天猫双12的广告&#xff0c;而且还没有关闭按钮。只能打开然后再关闭。二是每次打开电脑&#xff0c;桌面中间和右下角就有一…

Qt配置VS2017

目录 一 Qt安装 二 VS2017安装 三 Qt配置VS2017 一 Qt安装 1.1 下载网址&#xff1a;http://download.qt.io/archive/qt/ 这里选择 1.2 安装Qt 安装路径可以自己更改&#xff0c;然后点下一步 可以根据自己的VS版本自己选择&#xff0c;我们这里选MSVC-2017 64-bit 二…

opencv python tutorials_OpenCV-Python Tutorials 笔记(二)

OpenCV官方有一个面向python的文档OpenCV-PythonTutorials&#xff1a;我根据此文档进行了实践学习&#xff0c;结合自己经验简单记录一下笔记。(续)4、Image Processing inOpenCV4.1ChangingColorspaces转换颜色空间算是极其常用的操作了。不用说&#xff0c;cvtColor()。相关…

runltp出现问题 [

runltp 623行&#xff1a; if [ "$?" "0" ]; then 对[解析出了问题。 我灵机一动&#xff0c;是不是sh的问题。 which sh /bin/sh ls -l /bin/sh sh指向dash 果然不对 rm后 ln -s /bin/bash /bin/sh 再次运行&#xff0c;正确。 转载于:https://www.cnbl…

fork join框架_Java 7:Fork / Join框架示例

fork join框架Java 7中的Fork / Join Framework专为可分解为较小任务的工作而设计&#xff0c;并将这些任务的结果组合起来以产生最终结果。 通常&#xff0c;使用Fork / Join Framework的类遵循以下简单算法&#xff1a; // pseudocode Result solve(Problem problem) {if (p…

numpy T、transpose()函数、swapaxes()函数

目录 1 矩阵转置T&#xff0c;既线性代数中矩阵转置 2 transpose()函数 3 swapaxes()函数 1 矩阵转置T&#xff0c;既线性代数中矩阵转置 示例程序如下&#xff1a; import numpy as npa np.arange(0,24,2).reshape(3, 4)print(*****a****) print(a: \n, a) print(a.…

leetcode-54 螺旋矩阵

题目: 给定一个包含 m x n 个元素的矩阵&#xff08;m 行, n 列&#xff09;&#xff0c;请按照顺时针螺旋顺序&#xff0c;返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,…

米线店结账程序 装饰着模式_实验报告2_装饰者模式

序号&#xff1a;姓名&#xff1a;杨林燕学号&#xff1a;106专业&#xff1a;软件工程日期&#xff1a;成绩&#xff1a;实验二装饰者模式的运用一、实验目的&#xff1a;装饰者模式动态地将责任附加到对象上&#xff0c;若要扩展功能&#xff0c;装饰者提供了比继承更有弹性的…

Java的内置垃圾收集如何使您的生活更美好(大部分时间)

通过从应用程序中学习企业APM产品&#xff0c;发现更快&#xff0c;更高效的性能监控。 参加AppDynamics APM导览&#xff01; “无需为用户编写将寄存器返回到自由存储列表的程序。” 该行&#xff08;以及随后的十几行&#xff09;被埋在约翰麦卡锡&#xff08;John McCart…

PyOpenCV 坐标系统

pyOpenCV中的坐标系统&#xff0c;以图片左上角为原点&#xff08;0,0&#xff09;&#xff0c;水平方向为x轴&#xff08;也既图像的宽度width&#xff09;&#xff0c;竖直方向为y轴&#xff08;也既图像的高度height&#xff09;&#xff0c;如下图所示&#xff1a; #图像中…

office 论文 页码_毕业论文必备技巧:Word页码从第三页开始设置方法

许多应届毕业生在排版毕业论文时候&#xff0c;都会按要求设置页码&#xff0c;第一页是封面&#xff0c;第二页是目录&#xff0c;那么正文内容就要从第三页正式开始了。按照正规设置方式&#xff0c;那么页码此时应该是第三页。但是按照论文格式规定&#xff0c;页码应该是从…