• 最小价格 (爱思创算法四)(期中测试)(答案记录)


    前言:

    这篇文章还是是为了帮助一些

    像我这样的菜鸟

    找到简单的题解

    题目描述

    小思老师和小爱老师经常会结伴一起去超市购物,

    一天她们分别买了东西放在2个购物车(分别记为A车、B车)里,

    A、B里都有n件商品。

    这时她们突然想到,

    从A,B中可以分别挑出任意一件商品,

    并将价格相加,

    这样总共得到n*n个和。

    她们想知道这些和中最小的n个分别是多少。

    输入描述

    第一行,一个整数n (1<=n<=50000)

    接下来2行,每行都有n个正整数,

    用空格隔开,

    每个正整数最大值不会超过10^9 。

    输出描述

    n行,每行一个数字,表示从小到大最小的n个和

    输入样例#1

    1. 4
    2. 1 3 5 7
    3. 2 4 6 8

    输出样例#1

    1. 3
    2. 5
    3. 5
    4. 7

    提示

    本题线下文件测评时的说明:

    - 可执行文件名:price

    - 提交源程序文件名:price.cpp

    - 输入文件名:price.in

    - 输出文件名:price.out

    - 时间限制:1秒

    - 空间限制:256MB

    完整代码:

    1. #include
    2. using namespace std;
    3. const int N = 5e5+10;
    4. int a[N],b[N];
    5. int cnt[N];
    6. int n;
    7. struct node
    8. {
    9. int id,val;
    10. friend bool operator < (node a,node b)
    11. {
    12. return a.val>b.val;
    13. }
    14. };
    15. priority_queue q;
    16. int main()
    17. {
    18. //freopen("price.in","r",stdin);
    19. //freopen("price.out","w",stdout);
    20. cin>>n;
    21. for(int i=1;i<=n;i++) cin>>a[i];
    22. for(int i=1;i<=n;i++) cin>>b[i];
    23. sort(a+1,a+n+1);
    24. sort(b+1,b+n+1);
    25. for(int i=1;i<=n;i++)
    26. {
    27. cnt[i]=1;
    28. q.push(node{i,a[i]+b[1]});
    29. }
    30. for(int i=1;i<=n;i++)
    31. {
    32. node cur=q.top();
    33. q.pop();
    34. cout<'\n';
    35. cnt[cur.id]++;
    36. cur.val=a[cur.id]+b[cnt[cur.id]];
    37. q.push(cur);
    38. }
    39. return 0;
    40. }

    AC

  • 相关阅读:
    docker分layer的好处
    字符设备驱动框架的搭建
    net/http与gin框架的关系分析
    Java Enumeration 接口
    CNN中的参数与计算量
    [附源码]SSM计算机毕业设计班级风采网站JAVA
    vue3 参数传递 props
    Spring Boot 应用在 kubernetes 的 sidecar 设计与实战
    Guava中这些Map的骚操作,让我的代码量减少了50%
    设计原则之【里式替换原则】
  • 原文地址:https://blog.csdn.net/HackerQY/article/details/127817860