1. 感谢
  2. http://hi.baidu.com/%C0%B6%C9%ABarch/blog/item/f9d343f49cd92e53d7887d73.html
  3. 的博主!
  4. 思路:
  5. 我们要找到n个smallest的数,用贪心法可以解决这一问题。
  6. (1)维护两个数组,a和b,以及一个大根堆p
  7. 循环不变式:
  8. (1)初始化
  9. 将元素读入a,将a排序(从小到大)
  10. 执行并重复(2)
  11. (2)保持
  12. 对于这全部数据第二行到第m行(从第二行开始,因为第一行读到a里了)
  13. 将元素读入b,将b排序(从小到大)
  14. For i = 0 to n -1
  15. heap.push(a[i]+b[0]);
  16. 然后
  17. for(int i = 1; i < n;i++)
  18. {
  19. for(int j = 0 ; j < n; j++)
  20. {
  21. if( (b[i] + a[j]) > heap.top() ) break;
  22. heap.pop(); ///从heap中删除一个最大的元素,从而保证heap中元素数目不变
  23. heap.push(b[i] + a[j]);
  24. }
  25. }
  26. /////这样,就选出了n个最小值
  27. 然后把heap中的n个值按照从小到大给
  28. a[1] -> a[n],并将heap清空。
  29. 执行(2)
  30. (3)最终结果
  31. 输出a中全部元素就可以了,注意,对于每个case都要换行哦!
  32. #include <iostream>
    #include <stdio.h>
    #include <queue>
    #include <math.h>
    #include <string>
    #include <algorithm>
    using namespace std;
    bool cmp(int a,int b)
    {
    return a<b;
    }
    int main()
    {
    int a[],b[];
    int n,m,i,j,t,y;
    cin>>t;
    while(t--)
    {
    scanf("%d%d",&m,&n);
    for(i=;i<n;i++)
    scanf("%d",&a[i]);
    sort(a,a+n,cmp);
    priority_queue <int> q;
    for(i=;i<m;i++)
    {
    for(j=;j<n;j++)
    scanf("%d",&b[j]);
    sort(b,b+n,cmp);
    for(j=;j<n;j++)
    {
    q.push(b[]+a[j]);
    }
    for(j=;j<n;j++)
    {
    for(y=;y<n;y++)
    {
    if(a[y]+b[j]>=q.top()) break;
    q.pop();
    q.push(a[y]+b[j]);
    }
    }
    for(j=;j<n;j++)
    {
    a[n--j]=q.top();
    q.pop();
    }
    }
    for(i=;i<n;i++)
    {
    if(i==)
    printf("%d",a[i]);
    else
    printf(" %d",a[i]);
    }
    cout << endl;
    }
    return ;
    }

poj2442优先队列的更多相关文章

  1. Sequence(Poj2442)

    Sequence(Poj2442) 题意: 有m个数列,每个数列n个值,每个序列中选取一个值可以组成n^m种不同的序列,求前n小的序列和. Input 12 31 2 32 2 3 Output 3 ...

  2. 堆排序与优先队列——算法导论(7)

    1. 预备知识 (1) 基本概念     如图,(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树.树中的每一个结点对应数组中的一个元素.除了最底层外,该树是完全充满的,而且从左向右填充.堆的数组 ...

  3. 数据结构:优先队列 基于list实现(python版)

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: Minion-Xu #list实现优先队列 class ListPriQueueValueE ...

  4. python优先队列,队列和栈

    打印列表的疑问 class Node: def __str__(self): return "haha" print([Node(),Node()]) print(Node()) ...

  5. 数据结构作业——Sanji(优先队列)

    山治的婚约 Description 我们知道,山治原来是地下有名的杀人家族文斯莫克家族的三子,目前山治的弟弟已经出现,叫做四治,大哥二哥就叫汪(One)治跟突(Two)治好了(跟本剧情无关) .山治知 ...

  6. Java优先队列

    按照Java api的说法: java.util.PriorityQueue.PriorityQueue() Creates a PriorityQueue with the default init ...

  7. 优先队列实现Huffman编码

    首先把所有的字符加入到优先队列,然后每次弹出两个结点,用这两个结点作为左右孩子,构造一个子树,子树的跟结点的权值为左右孩子的权值的和,然后将子树插入到优先队列,重复这个步骤,直到优先队列中只有一个结点 ...

  8. “玲珑杯”ACM比赛 Round #7 B -- Capture(并查集+优先队列)

    题意:初始时有个首都1,有n个操作 +V表示有一个新的城市连接到了V号城市 -V表示V号城市断开了连接,同时V的子城市也会断开连接 每次输出在每次操作后到首都1距离最远的城市编号,多个距离相同输出编号 ...

  9. Dijkstra算法优先队列实现与Bellman_Ford队列实现的理解

    /* Dijkstra算法用优先队列来实现,实现了每一条边最多遍历一次. 要知道,我们从队列头部找到的都是到 已经"建好树"的最短距离以及该节点编号, 并由该节点去更新 树根 到其 ...

随机推荐

  1. eclipse 4.3 汉化

    打开浏览器,浏览“参考资料”内给出的“eclipse语言包下载”地址,在博客新页面找到地址链接,如图所示.“Babel Language...”开头的一栏下面就是各个eclise版本的语言包,此处以I ...

  2. C#安装,启动,停止,卸载Windows服务

    public class OptionServices    {        //安装服务        public static void InstallService(string filep ...

  3. 一道Google面试题——基数排序思想

    题目描述: 一个大小为n的数组,里面的数都属于范围[0,n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空间和O(n)时间. 算法分析: 这个题目要求用O(n)的时间复杂度,这意味着只 ...

  4. uva 12730(期望经典)

    选自: http://blog.csdn.net/myhelperisme/article/details/39724515 用dp(n)表示有n个位置时的期望值,那么,对于一个刚进来的人来说,他有 ...

  5. docker学习笔记(2) 构建镜像

    一.手动构建一个简单镜像 我们以构建nginx的docker镜像为例:手动构建镜像 docker pull centos    安装基础镜像docker run --name mynginx -it ...

  6. 信息搜集之常见的web组合

    环境: Win2003或Win7 Asp解析环境搭建 小旋风 Php解析环境搭建 phpstudy aspx解析环境搭建 IIS jsp解析环境搭建 jspstudy 常规渗透环境网络环境解析 1.操 ...

  7. JavaWeb 过滤器应用之页面静态化

    页面静态化是把servlet请求的资源所做输出保存到html中, 然后重定向到 html 页面, 二次访问时,这个html已经存在,那么直接重定向,不用再去访问servlet! // StaticFi ...

  8. ES6学习笔记(一)——let和const

    1.ES6学习之let.const (1).var.let.const 变(常)量声明 ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景. 在ES6中let就诞生了,实际上它 ...

  9. ffmpeg参数使用说明2

    附录一(ffmpeg参数说明): [参数] [说明] [示例] -i "路径" 指定需要转换的文件路径 -i "C:\nba.wmv" -y 覆盖输出文件,即如 ...

  10. 阻止element组件中的<el-input/>的粘贴功能

    需求: 阻止element组件中的<el-input/>的粘贴功能 实现思路: <el-input/>组件是由外层<div>和内层的<input>组成的 ...