zoukankan      html  css  js  c++  java
  • poj 2442

    题意:给你n*m的矩阵,然后每行取一个元素,组成一个包含n个元素的序列,一共有n^m种序列,

    让你求出序列和最小的前n个序列的序列和。

    stl中优先队列的应用;

    #include<vector>

    #include<queue>

    priority_queue<int ,vector<int>,less<int> >que;

    代码如下:

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <vector>
     4 #include <queue>
     5 #include <algorithm>
     6 using namespace std;
     7 int main()
     8 {
     9     int t;
    10     int n,m;
    11     int s1[2010];
    12     int s2[2010];
    13     priority_queue<int,vector<int>,less<int> >que;
    14     scanf("%d",&t);
    15     while(t--)
    16     {
    17         scanf("%d%d",&n,&m);
    18         for(int i=0;i<m;i++)
    19         scanf("%d",&s1[i]);
    20         std::sort(s1,s1+m);
    21         for(int i=1;i<n;i++)
    22         {
    23             for(int j=0;j<m;j++)
    24             {
    25                 scanf("%d",&s2[j]);
    26                 que.push(s1[0]+s2[j]);
    27             }
    28             std::sort(s2,s2+m);
    29             for(int k=1;k<m;k++)
    30             for(int l=0;l<m;l++)
    31             {
    32                 if(s1[k]+s2[l]>que.top())
    33                     break;
    34                     que.pop();
    35                    que.push(s1[k]+s2[l]);
    36             }
    37             for(int k=0;k<m;k++)
    38             {
    39                 s1[m-k-1]=que.top();
    40                 que.pop();
    41             }
    42         }
    43         printf("%d",s1[0]);
    44         for(int i=1;i<m;i++)
    45         printf(" %d",s1[i]);
    46         puts("");
    47     }
    48     return 0;
    49 }
    View Code
  • 相关阅读:
    MapReduce原理
    《软件需求十步走》阅读笔记3
    《软件需求十步走》阅读笔记2
    《软件需求十步走》阅读笔记1
    2017秋季阅读计划
    怎么做需求分析
    兴趣小组第一次
    第十天
    第九天
    对UC的分析(个人观点,多多包涵)
  • 原文地址:https://www.cnblogs.com/mafangfang/p/3268731.html
Copyright © 2011-2022 走看看