POJ 2442 Sequence

这道题的数据真强大,各种写法不是MLE就是TLE,好不容易换了这种写法终于AC了。

题目大意:

输入m个数集,每个含n个数,求从每个集合取一个数后,按非降序输出前n小的和。

用优先队列做的,注意限制队列元素个数,否则会超时超内存的。

下面是代码:

#include 
#include 
using namespace std;
int n,m,a[4000005],b[4000005];
int cmp(const void *a,const void *b)
{
    return *(int *)a-*(int *)b;
}
int main()
{
    int t,flat,i,j,sum,k;
    scanf("%d",&t);
    while(t--)
    {
        int ai=1,bi=0,x,r,sum,a[2005];
        scanf("%d%d",&n,&m);
        priority_queue ,greater >p;
        priority_queue ,less >q;
        for(i=0; isum+a[j])
                    {
                        q.pop();
                        q.push(sum+a[j]);
                    }
                    else if(q.size()


你可能感兴趣的:(2013POJ,排序查找,POJ训练纪实)