uva 11997(优先队列)

Posted 发牌员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uva 11997(优先队列)相关的知识,希望对你有一定的参考价值。

不说了,这种优化想法想不到,刘汝嘉牛逼

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
const int maxn=800;
int a[maxn][maxn];
int n;
struct note
{
    int s;
    int b;
   bool operator <(const note &p) const
   {
       return s>p.s;
   }
};
void mage(int *A,int *B,int *C,int n)
{
     priority_queue<note> pq;
     for(int i=0;i<n;i++)
       pq.push(note{A[i]+B[0],0});
    for(int i=0;i<n;i++)
    {
        note nn=pq.top();
        pq.pop();
        C[i]=nn.s;
        int b=nn.b;
        if(b+1<n) pq.push(note{nn.s-B[b]+B[b+1],b+1});
    }

}
int main()
{
    while(~scanf("%d",&n))
    {
         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++)
            mage(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;
}

 

以上是关于uva 11997(优先队列)的主要内容,如果未能解决你的问题,请参考以下文章

UVa 11997 K Smallest Sums 优先队列&&打有序表&&归并

UVA 11997 K Smallest Sums 优先队列 多路合并

UVA 11997 K Smallest Sums 优先队列+归并 STL

[uva11997]k个最小和

UVA - 11997 思维

UVA11997 K Smallest Sums