uva 11997 - K Smallest Sums
2013-10-24 10:13
337 查看
多路并归问题:
代码:
View Code
代码:
#include<cstdio> #include<queue> #include<algorithm> #define maxn 760 using namespace std; struct node { int s,b; node(int s,int b):s(s),b(b) {} bool operator<(const node &t)const { return s>t.s; } }; void merge(int *a,int *b,int *c,int n) { priority_queue<node>q; for(int i=0; i<n; i++) q.push(node(a[i]+b[0],0)); for(int i=0; i<n; i++) { node no=q.top(); q.pop(); c[i]=no.s; int bb=no.b; if(bb+1<n) q.push(node(no.s-b[bb]+b[bb+1],bb+1)); } } int a[maxn][maxn]; int main() { int n; while(scanf("%d",&n)!=EOF) { for(int i=0; i<n; i++) { for(int j=0; j<n; j++) scanf("%d",&a[i][j]); sort(a[i],a[i]+n); } for(int i=1; i<n; i++) merge(a[0],a[i],a[0],n); for(int i=0; i<n-1; i++) printf("%d ",a[0][i]); printf("%d\n",a[0][n-1]); } return 0; }
View Code
相关文章推荐
- Uva 11997 - K Smallest Sums(多路归并)
- UVA 11997 - K Smallest Sums
- 【暑假】[实用数据结构]UVa11997 K Smallest Sums
- UVA 11997 K Smallest Sums
- UVa 11997 K Smallest Sums
- uva_11997,K Smallest Sums优先队列
- UVA 11997 The K smallest Sums
- UVa 11997 - K Smallest Sums
- 思路题,多路归并(K Smallest Sums,UVA 11997)
- UVA11997_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 优先队列