• uva11997 K Smallest Sums&&UVALive 3135 Argus(优先队列,多路归并)


    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<map>
    #include<set>
    #include<vector>
    #include<algorithm>
    #include<stack>
    #include<queue>
    #include<cctype>
    #include<sstream>
    using namespace std;
    #define pii pair<int,int>
    #define LL long long int
    const double eps=1e-10;
    const int INF=1000000000;
    const int maxn=750+10;
    int n,a[maxn][maxn];
    struct node
    {
        int s,b;
        node(int s,int b): s(s),b(b){}
        bool operator < (const node &x) const
        {
            return s>x.s;
        }
    };
    priority_queue<node>pq;
    void he(int *A,int *B,int *C)
    {
        while(!pq.empty()) pq.pop();
        for(int i=0; i<n; i++)
        {
            pq.push(node(A[i]+B[0],0));
        }
        for(int i=0; i<n; i++)
        {
            node t=pq.top();
            pq.pop();
            C[i]=t.s;
            pq.push(node(t.s-B[t.b]+B[t.b+1],t.b+1));
        }
    }
    int main()
    {
        //freopen("in1.txt","r",stdin);
        //freopen("out.txt","w",stdout);
        while(scanf("%d",&n)==1)
        {
            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++)
            {
                he(a[0],a[i],a[0]);
            }
            for(int i=0; i<n-1; i++) printf("%d ",a[0][i]);
            printf("%d
    ",a[0][n-1]);
        }
        return 0;
    }
    uva11997
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<map>
    #include<set>
    #include<vector>
    #include<algorithm>
    #include<stack>
    #include<queue>
    #include<cctype>
    #include<sstream>
    using namespace std;
    #define pii pair<int,int>
    #define LL long long int
    const double eps=1e-10;
    const int INF=1000000000;
    const int maxn=1000+10;
    int k,a,b,ans[10000+10];
    string s;
    struct node
    {
        int num,t,p;
        node (int num,int t,int p):num(num),t(t),p(p){}
        bool operator <(const node &x)const
        {
            if(t!=x.t)
            {
                return t>x.t;
            }
            else
            {
                return num>x.num;
            }
        }
    };
    priority_queue<node>pq;
    int main()
    {
        //freopen("in1.txt","r",stdin);
        //freopen("out.txt","w",stdout);
        while(cin>>s)
        {
            if(s[0]=='#')
            {
                scanf("%d",&k);
                for(int i=0;i<k;i++)
                {
                    node tmp=pq.top();
                    pq.pop();
                    ans[i]=tmp.num;
                    pq.push(node(tmp.num,tmp.t+tmp.p,tmp.p));
                }
            }
            else
            {
                scanf("%d%d",&a,&b);
                pq.push(node(a,b,b));
            }
            for(int i=0;i<k;i++)
            {
                printf("%d
    ",ans[i]);
            }
        }
        return 0;
    }
    uvalive 3135
  • 相关阅读:
    markdown语法
    GIT基本操作
    函数rest参数和扩展
    axios基础介绍
    Vue-Resource的使用
    Vue-router的介绍
    Vue2.0+组件库总结
    Vue 项目de一些准备工作
    VUE.js入门学习(5)- 插槽和作用域插槽
    VUE.js入门学习(4)-动画特效
  • 原文地址:https://www.cnblogs.com/zywscq/p/4280992.html
Copyright © 2020-2023  润新知