UVA——11997——K Smallest Sums
来源:互联网 发布:sql数据库打不开怎么办 编辑:程序博客网 时间:2024/06/16 13:56
You're given k arrays, each array has k integers. There are kk ways to pick exactly one element in each array and calculate the sum of the integers. Your task is to find the k smallest sums among them.
Input
There will be several test cases. The first line of each case contains an integer k (2<=k<=750). Each of the following k lines contains k positive integers in each array. Each of these integers does not exceed 1,000,000. The input is terminated by end-of-file (EOF). The size of input file does not exceed 5MB.
Output
For each test case, print the k smallest sums, in ascending order.
Sample Input
31 8 59 2 510 7 621 11 2
Output for the Sample Input
9 10 122 2
#include <iostream> #include <queue> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; const int M=800; int a[M][M]; int k; struct node { int sum; int n; friend bool operator<(node n1,node n2) { return n1.sum>n2.sum;//表示把sum从小到大排序 } }; void merge(int *A,int *B) { priority_queue<node>Q; node temp; for(int i=0;i<k;i++) { temp.sum=A[i]+B[0]; temp.n=0; Q.push(temp); } for(int i=1;i<k;i++) { node t=Q.top(); //每次都弹出Q中最小的数,放到A中 Q.pop(); A[i-1]=t.sum; t.sum=t.sum+B[t.n+1]-B[t.n]; t.n++; Q.push(t); } A[k-1]=Q.top().sum; } int main() { while(scanf("%d",&k)!=EOF) { for(int i=0;i<k;i++) { for(int j=0;j<k;j++) scanf("%d",&a[i][j]); sort(a[i],a[i]+k);//把每一行的排序 } for(int i=1;i<k;i++) { merge(a[0],a[i]); } printf("%d",a[0][0]); for(int i=1;i<k;i++) printf(" %d",a[0][i]); printf("\n"); } return 0; }
0 0
- uva 11997——K Smallest Sums
- UVA——11997——K Smallest Sums
- UVa - 11997 - K Smallest Sums
- UVa - 11997 - K Smallest Sums
- Uva-11997-K Smallest Sums
- UVA 11997 K Smallest Sums
- UVA 11997 K Smallest Sums
- UVA 11997 K Smallest Sums
- UVa - 11997 - K Smallest Sums
- UVA 11997 K Smallest Sums
- UVA 11997 K Smallest Sums
- UVA 11997 K Smallest Sums
- uva 11997 - K Smallest Sums
- UVa 11997 K Smallest Sums
- UVA - 11997 K Smallest Sums
- UVa 11997 K Smallest Sums
- UVA 11997 K Smallest Sums
- Uva 11997 - K Smallest Sums
- BFS,DFS,DIJKSTRA算法基础练习
- Android消息提示框和对话框
- 贪心之Wooden Sticks
- Oracle VM Templates downloading URL
- 中断与任务——vxworks
- UVA——11997——K Smallest Sums
- Setting property 'source' to 'org.eclipse.jst.jee.server:webProject' did not find a matching propert
- nginx.conf的配置文件说明
- 字符串匹配的KMP算法
- android app 启动会白屏的解决办法
- 目标检测中背景建模方法
- 《Unix内核源码剖析》
- scrum角色及其职责介绍
- MINA 框架简介