• POJ 2442-Sequence(优先队列)


    明白队列的话就很简单,不会就慢慢理解慢慢学,我也是刚刚接触

    代码:

        #include <iostream>
        #include <string.h>
        #include <stdio.h>
        #include <algorithm>
        #include <queue>
    
        using namespace std;
    
        int main()
        {
            priority_queue<int, vector<int>, less<int> >q;
            int n,m,i,j,k;
            int t;
            int a[2001],b[2001];
            scanf("%d",&t);
            while(t--)
            {
                scanf("%d%d",&n,&m);
                for(i=0;i<m;i++)
                    scanf("%d",&a[i]);//先输入一行数据按顺序排好
                sort(a,a+m);
                for(i=1;i<n;i++)//输入剩下的n-1组数据,进行求和,选择最优的继续循环
                {
                    for(j=0;j<m;j++)
                        scanf("%d",&b[j]);
                    for(j=0;j<m;j++)
                        q.push(a[0]+b[j]);//第一组放进去先默认最小sum
                    for(j=1;j<m;j++)//循环找符合条件的放进队列里
                    {
                        for(k=0;k<m;k++)
                        {
                            if(a[j]+b[k]<q.top())
                            {
                                q.pop();
                                q.push(a[j]+b[k]);
                            }
                        }
                    }
                    for(j=0;j<m;j++)//更新最小sum继续循环
                    {
                        a[j]=q.top();
                        q.pop();
                    }
                    sort(a,a+m);
                }
                for(i=0;i<m;i++)
                {
                    if(i==m-1)
                        printf("%d
    ",a[i]);
                    else
                        printf("%d ",a[i]);
                }
    
            }
        }
        #include <iostream>
        #include <string.h>
        #include <stdio.h>
        #include <algorithm>
        #include <queue>
    
        using namespace std;
    
        int main()
        {
            priority_queue<int, vector<int>, less<int> >q;
            int n,m,i,j,k;
            int t;
            int a[2001],b[2001];
            scanf("%d",&t);
            while(t--)
            {
                scanf("%d%d",&n,&m);
                for(i=0;i<m;i++)
                    scanf("%d",&a[i]);//先输入一行数据按顺序排好
                sort(a,a+m);
                for(i=1;i<n;i++)//输入剩下的n-1组数据,进行求和,选择最优的继续循环
                {
                    for(j=0;j<m;j++)
                        scanf("%d",&b[j]);
                    for(j=0;j<m;j++)
                        q.push(a[0]+b[j]);//第一组放进去先默认最小sum
                    for(j=1;j<m;j++)//循环找符合条件的放进队列里
                    {
                        for(k=0;k<m;k++)
                        {
                            if(a[j]+b[k]<q.top())
                            {
                                q.pop();
                                q.push(a[j]+b[k]);
                            }
                        }
                    }
                    for(j=0;j<m;j++)//更新最小sum继续循环
                    {
                        a[j]=q.top();
                        q.pop();
                    }
                    sort(a,a+m);
                }
                for(i=0;i<m;i++)
                {
                    if(i==m-1)
                        printf("%d
    ",a[i]);
                    else
                        printf("%d ",a[i]);
                }
    
            }
        }
  • 相关阅读:
    前端开发经验总结
    开发组件的原则
    jQuery deferred对象API详解
    prototype、constructor那点事儿
    text-overflow:ellipsis的那点事儿
    9 个超实用的 jQuery 代码片段
    BFC
    Console命令详解,让调试js代码变得更简单
    前端css规范
    什么是FOUC?如何避免FOUC?
  • 原文地址:https://www.cnblogs.com/nr1999/p/8946765.html
Copyright © 2020-2023  润新知