码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • P1631 序列合并,思维,优先队列


    P1631 序列合并 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

    有两个长度为 N 的单调不降序列 A,B,在 A,B 中各取一个数相加可以得到 N2 个和,求这 N2 个和中最小的 N 个。

    输入格式

    第一行一个正整数 N;

    第二行 N 个整数 A1…N​。

    第三行 N 个整数 B1…N​。

    输出格式

    一行 N 个整数,从小到大表示这 N 个最小的和。

    输入输出样例

    输入 #1复制

    3
    2 6 6
    1 4 8

    输出 #1复制

    3 6 7

    说明/提示

    对于 50% 的数据,3N≤103。

    对于 100% 的数据,1≤N≤105,1≤ai​,bi​≤109。

    解析:

    题目让我们求前n个最小的和

    性质:

    两个原序列a,b 从小到大排列,我们将a序列的各个值于b序列的第一个值相加,得到n个数,第一小的值一定出现在这n个数中,若当前最小的数是a[i]+b[j]所得,那么用a[i]+b[j+1]将其替换,则下一个最小值还是在这n个数中……。

    重复以上过程,最终将获得前n个最小的值

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #include
    15. using namespace std;
    16. typedef long long LL;
    17. const int N = 1e5 + 5;
    18. int n;
    19. int a[N], b[N], to[N];
    20. bool operator > (const pair<int, int>& a,const pair<int, int>& b) {
    21. return a.first > b.first;
    22. }
    23. priority_queueint, int>, vectorint, int>>, greaterint, int>>>q;
    24. int main() {
    25. scanf("%d", &n);
    26. for (int i = 1; i <= n; i++) {
    27. scanf("%d", &a[i]);
    28. }
    29. for (int i = 1; i <= n; i++) {
    30. scanf("%d", &b[i]);
    31. q.push(pair<int, int>(a[1] + b[i], i));
    32. to[i] = 1;
    33. }
    34. while (n--) {
    35. printf("%d ", q.top().first);
    36. int i = q.top().second;
    37. q.pop();
    38. to[i]++;
    39. q.push(pair<int, int>(b[i] + a[to[i]], i));
    40. }
    41. return 0;
    42. }

  • 相关阅读:
    shell编程必备100题
    MYSQL(事务)
    电商新趋势:Starday拿下黑色星期五的制胜法宝是物流速度
    【JavaEE】PCB和进程调度的基本过程
    关于jQuery_选择器扩展的介绍和基本使用
    在 Windows 操作系统中,可以通过命令行工具来杀死进程
    冒泡排序--java(详解)
    git clone http/https 报错 10054/443 问题
    JS-ECharts-前端图表 多层级联合饼图、柱状堆叠图、柱/线组合图、趋势图、自定义中线、平均线、气泡备注点
    一种有效的并行进化元启发法及其在三个优化问题中的应用
  • 原文地址:https://blog.csdn.net/Landing_on_Mars/article/details/133823137
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号