文章目录

  • 前言
  • 题目
  • 详细题解
    • 写法1 O ( n ) O(n) O(n)
    • 推导证明
    • 写法2 O ( n l o g n ) O(nlogn) O(nlogn)
    • 推导证明
  • 举一反三
  • 总结

前言

这个寒假每日一题的系列,难度都是比较低的,属于基础题。

今天的题目是来自PAT甲级真题1048。

题目

伊娃喜欢从整个宇宙中收集硬币。

有一天,她去了一家宇宙购物中心购物,结账时可以使用各种硬币付款。

但是,有一个特殊的付款要求:每张帐单,她只能使用恰好两个硬币来准确的支付消费金额。

给定她拥有的所有硬币的面额,请你帮她确定对于给定的金额,她是否可以找到两个硬币来支付。

输入格式

  • 第一行包含两个整数 N 和 M,分别表示硬币数量以及需要支付的金额。
  • 第二行包含 N 个整数,表示每个硬币的面额。

输出格式

  • 输出一行,包含两个整数 V1,V2,表示所选的两个硬币的面额,使得 V1≤V2 并且 V1+V2=M。
  • 如果答案不唯一,则输出 V1 最小的解。
  • 如果无解,则输出 No Solution。

数据范围

  • 1 ≤ N ≤ 105 , 1≤N≤105, 1N105,
  • 1 ≤ M ≤ 1000 1≤M≤1000 1M1000
输入样例1:
8 15
1 2 8 7 2 4 11 15
输出样例1:
4 11
输入样例2:
7 14
1 8 7 2 4 11 15
输出样例2:
No Solution

详细题解

写法1 O ( n ) O(n) O(n)

#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_set>using namespace std;const int INF = 10000;int main()
{int n, m;cin >> n >> m;unordered_set<int> hash;int v1 = INF, v2;for (int i = 0; i < n; ++ i ){int a, b;cin >> a;b = m - a;if (hash.count(b)){hash.insert(a);if (a > b) swap(a, b);if (a < v1) v1 = a, v2 = b;}else hash.insert(a);}if (v1 == INF) puts("No Solution");else cout << v1 << " " << v2 << endl;return 0;
}

毫无疑问,这是用空间换时间的做法,利用哈希表进行增删查改,时间复杂度都是 O ( 1 ) O(1) O(1)的,但是相应的空间复杂度都是 O ( n ) O(n) O(n)的。

最后提交,AC

【寒假每日一题】找硬币(个人练习)详细题解+推导证明(第十二天)相关推荐

  1. 【寒假每日一题】分巧克力(个人练习)详细题解+推导证明(第八天)附带转载程序员壁纸

    文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 话说今天开始准备搞一个秋招的GitHub,算是复习一遍了. 今天还是寒假每日一 ...

  2. 【寒假每日一题】数字三角形(个人练习)详细题解+推导证明(第二天)

    文章目录 前言 题目 详细题解 写法1 O ( n 2 ) O(n^2) O(n2) 推导证明 写法2 O ( n 2 ) O(n^2) O(n2) 推导证明 举一反三 总结 前言 昨天真是人生中奇葩 ...

  3. 【寒假每日一题】剪绳子(个人练习)详细题解+推导证明(第六天)

    文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 今天终于出核酸检测的结果,还好大家都没事,不然怕是要封城了!!! 今天还是寒假 ...

  4. 【寒假每日一题】十三号星期五(个人练习)详细题解+推导证明(第十三天)

    文章目录 前言 题目 详细题解 写法1 O(n)O(n)O(n) 推导证明 举一反三 总结 前言 这一周的题,真的是很扎实的基础题. 今天的题目是来自usaco training 1.2. 最近在家呆 ...

  5. 【寒假每日一题】棋盘挑战(个人练习)详细题解+推导证明(第十六天)

    文章目录 前言 题目 详细题解 写法1 推导证明 举一反三 总结 前言 今天是经典的深度优先搜索问题,即八皇后问题. 作为经典问题,我发现了一种新的写法,不需要开二维数组即可完成. 题目 给定一个 N ...

  6. 【寒假每日一题】平方矩阵 II(个人练习)详细题解+推导证明(第十四天)

    文章目录 前言 题目 详细题解 写法1 O(n2)O(n^2)O(n2) 推导证明 写法2 O(n2)O(n^2)O(n2) 推导证明 写法3 O(n2)O(n^2)O(n2) 推导证明 举一反三 总 ...

  7. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.19日(2018省赛A组第7题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  8. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.26日(2019省赛A组第4题)

    2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...

  9. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.21日(2018省赛A组第9题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

最新文章

  1. Android ndk 安装教程 以及环境变量配置
  2. POJ-2513 Colored Sticks 字典树,欧拉回路
  3. stm32f103 spi crc
  4. 虚拟机克隆Linux操作系统后解决MAC地址冲突
  5. 1.const关键字.rs
  6. 搜狐新闻推荐算法原理 | “呈现给你的,都是你所关心的”
  7. Python全栈开发之并发编程
  8. k-means算法原理及实战
  9. 一站式快速实现应用现代化,IBM Cloud Pak做对了什么? | 技术公开课
  10. 网管警惕:能突破网关限制的七大软件(转)
  11. 选择SOA平台的标准是什么?
  12. 一道我根本猜不出来的Trajan
  13. html5小游戏塔防,HTML5塔防(一)
  14. 计算机二级交付遇到问题怎么解决,交期延误问题的解决办法 !
  15. 【金三银四】Java中间件面试题(2021最新版)
  16. 一些常见的项目管理 KPI
  17. 学会应对不同的面试官
  18. 【烟草物流配送系统】项目需求分析
  19. 4.21 检查SSN
  20. Monster Tower (堆 二分

热门文章

  1. 某宝找人代写作业,发现信息被泄露,店家回复:遭黑客攻击
  2. chatgpt赋能python:Python中quit()命令的使用方法和注意事项
  3. Java字节数组转文件,文件转字节数组
  4. 使用JS校验身份证号
  5. Opencv 霍夫变换 霍夫圆检测
  6. PDF转WORD的方法总结
  7. 品牌定位的十五种法则
  8. Python 货币转换案例
  9. 导出Excel设置名称为中文
  10. 递归——函数在内部自己调用自己,那么该函数是递归函数 作用和循环效果一样 要加推出条件return,否则发生栈溢出,导致死循环 递归给数组中对象添加属性 toString()和随机数