题目链接:

  1913: yifan and matrix

题目描述:

  有一个n*n的矩阵,在每一行取出一个数,可以得到n个数的和,问前n小的和分别是多少?

解题思路:
  对于两个数组a[n],b[n],我们可以用二路归并维护一个升序序列a[i]+b[j](1<=i<=n,1<=j<=n),先把a[i]+b[1](1<=i<=n)加进优先队列,每次取出队首元素,记录下来,然后再改变为a[i]+b[j+1]再加进队列.

依次进行n-1二路合并即可。

  优美的代码将要闪亮登场!!!!!

 #include <queue>
#include <cstdio>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = ;
struct node
{
int sum, num;
node (int a, int b):sum(a),num(b){}
bool operator < (const node &a) const {
return sum > a.sum;
}
};
int maps[maxn][maxn], ans[maxn], arr[maxn];
int n;
void Merge (int cnt)
{
priority_queue <node> Q;
for (int i=; i<n; i++)
Q.push (node(ans[i]+maps[cnt][], ));
for (int i=; i<n; i++)
{
node p = Q.top ();
Q.pop();
arr[i] = p.sum;
if (p.num != n)
{
p.sum += maps[cnt][p.num+] - maps[cnt][p.num];
p.num ++;
Q.push (p);
}
}
for (int i=; i<n; i++)
ans[i] = arr[i];
}
int main ()
{
while (scanf ("%d", &n) != EOF)
{
for (int i=; i<n; i++)
{
for (int j=; j<n; j++)
scanf ("%d", &maps[i][j]);
sort (maps[i], maps[i]+n);
}
for (int i=; i<n; i++)
ans[i] = maps[][i];
for (int i=; i<n; i++)
Merge (i);
for (int i=; i<n; i++)
printf ("%d%c", ans[i], i==n-?'\n':' ');
}
return ;
}

最新文章

  1. iOS - 在工程中试玩状态模式
  2. XIV Open Cup named after E.V. Pankratiev. GP of SPb
  3. android selector 开始自定义样式
  4. [java基础]文档注释
  5. Linux安装mysql最新版本纪要
  6. Android Non-UI to UI Thread Communications(Part 2 of 5)
  7. online ddl 跟踪
  8. Android基本控件之Menus
  9. 使用VisualStudio进行单元测试之二
  10. 使Web Api 支持跨域资源共享(CORS)
  11. fp oo
  12. java复习(1)---java与C++区别
  13. django 项目中遇到的问题(持续更新中)
  14. 发送邮件,出现异常:服务器响应为: Error: need EHLO and AUTH first !&quot;
  15. 在vue项目中mock数据
  16. vue-cil 服务端预渲染 prerender-spa-plugin
  17. shell编程学习笔记(十二):Shell中的break/continue跳出循环
  18. decorator, async/await, generator
  19. 删除新版UniAccess Agent 办公室监控软件的方法
  20. com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column &#39;id&#39; at row 1

热门文章

  1. 【网络】TCP的拥塞控制
  2. Java入门 第一季第五章 编程练习解析
  3. lightoj 1138 - Trailing Zeroes (III)【二分】
  4. Zookeeper 3.4 官方文档翻译
  5. maven导入dom4j以及jaxen.jar报java.lang.UnsupportedOperationException:错误
  6. tcp state
  7. 递归读取制定目录下所有文件夹和文件的实现(java)
  8. mongodb01--安装
  9. CentOS 7下Keepalived + HAProxy 搭建配置详解
  10. 利用http_load测试Web引擎性能