第九章 哈希表 AcWing 1532. 找硬币

news2025/7/19 3:48:35

第九章 哈希表 AcWing 1532. 找硬币

原题链接

AcWing 1532. 找硬币

算法标签

哈希表 双指针

思路

使用哈希表集合
用一个哈希表存储硬币。
对于每一枚硬币 x,判断在集合中是否存在 y,使得 x + y = m。
如果存在,则是一组解,判断该解的小面值硬币是否小于 v1, 如果是,则存入 v1, v2。
如果存在解,则输出。否则无解。
时间复杂度:一次循环,所以为 O(n) 。空间复杂度:开辟了一个堆,所以为 O(n)。

为何先查询是否存在y=m-x,若存在,再插入x

若硬币 x与需要支付的金额存在m=2*x, 此时插入再判断恒存在x x符合题意
在这里插入图片描述

代码

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define int long long
#define xx first
#define yy second
#define ump unordered_map
#define us unordered_set
#define pq priority_queue
#define rep(i, a, b) for(int i=a;i<b;++i)
#define Rep(i, a, b) for(int i=a;i>=b;--i)
using namespace std;
typedef pair<int, int> PII;
const int N=10005, INF=0x3f3f3f3f3f3f3f3f, MOD=1e9+7;
const double Exp=1e-8;
//int t, n, m, cnt, ans; 
int n, m, x, v1=INF, v2;
us<int> usi;
inline int rd(){
   int s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
   return s*w;
}
void put(int x) {
    if(x<0) putchar('-'),x=-x;
    if(x>=10) put(x/10);
    putchar(x%10^48);
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	n=rd(), m=rd();
	rep(i, 0, n){
	    x=rd();
	    int y=m-x;
	    if(usi.count(y)){
	        usi.insert(x);
	        if(x>m-x){
	            swap(x, y);
	        }
	        if(x<v1){
	            v1=x;
	            v2=y;
	        }
	    }
	    else{
	        usi.insert(x);
	    }
	}
	if(v1==INF){
	    puts("No Solution");
	}else{
	    printf("%lld %lld", v1, v2);   
	}
	return 0;
}

参考文献

AcWing 1532. 找硬币(PAT甲级辅导课)y总视频讲解

原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/36175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux Command htpasswd 创建密码文件

文章目录Linux Command htpasswd 创建密码文件1. 简介2. 安装3. 语法4. 选项5. 示例6. 其他Linux Command htpasswd 创建密码文件 1. 简介 htpasswd是Apache的Web服务器内置的工具,用于创建和更新储存用户名和用户基本认证的密码文件。 2. 安装 centos 7、 redhat&#xff…

MCE | 靶向 cGAS-STING 通路或可治疗渐冻症

自从 12 年前被发现以来&#xff0c;STING 途径就吸引了众多TOP生物学家的关注&#xff0c;去年 3 月&#xff0c;陈志坚教授带领的研究团队和其合作者在 Nature 上同日发表三篇论文&#xff0c;让 cGAS-STING 通路大火了一把&#xff0c;并被认为是未来十年内肿瘤免疫靶点的“…

指静脉当前遇到的问题

一、《基于改进残差网络的指静脉识别算法》_易芮 2020.5.20 ①采集到的指静脉图像质量不高"边缘曝光"及手指的自由度导致图像存在的偏移问题 &#xff08;传统的指静脉识别技术是基于图像的纹理、特征点等细节进行特征提取&#xff0c;若图像质量较差的话&#xff…

thymeleaf抽取公共页面

thymeleaf抽取公共页面Thymeleaf中th:include、th:replace、th:insert、th:fragment用法及区别th:include、th:replace、th:insert区别在开发Web网站的时候&#xff0c;HTML页面有很多是相同的&#xff0c;如果每一个页面都写一遍&#xff0c;不仅非常麻烦&#xff0c;而且非常…

基于粒子群算法的城轨列车牵引多目标能耗优化问题附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

python基础之元组

文章目录一、元组注意&#xff1a;二、创建元组怎么验证这个变量真的是一个元组类型&#xff1a;三、使用迭代遍历元组四、应用场景五、格式化字符串后面的&#xff08;&#xff09;本质上就是元组六、元组和列表之间的转换一、元组 元组&#xff08;Tuple&#xff09;与列表类…

Python(PyQt5)制作帮助文档查看器(可显示后缀名为md的文件)同时显示文本和图片

先看完整效果图: 帮助文档查看器是很多程序中必备要素,而利用Qt中的QTreeView组件可以很方便的查看文件,而QTextBrowser可以直接显示格式化的MarkDown文本。因此可以利用这两个组件制作一个帮助文件查看器。 未优化 效果图: 问题优化: 你会发现QT treeView列宽设置不成功问题…

Mybatis-Plus 06 条件构造器和常用接口

一、wapper介绍 Wrapper &#xff1a; 条件构造抽象类&#xff0c;最顶端父类 AbstractWrapper &#xff1a; 用于查询条件封装&#xff0c;生成 sql 的 where 条件 ​ QueryWrapper &#xff1a; 查询条件封装 ​ UpdateWrapper &#xff1a; Update 条件封装 AbstractL…

PG::Inclusiveness

nmap -Pn -p- -T4 --min-rate1000 192.168.134.14 nmap -Pn -p 21,22,80 -sCV 192.168.134.14 80端口是默认页面&#xff0c;先查看21端口FTP服务的匿名登录&#xff0c;并未发现可利用信息。 继续查看80端口&#xff0c;在robots.txt中得到提示。 https://www.howtogeek.co…

【Kubernetes | Pod 系列】Pod的 YAML 清单文件详解

目录3. Pod的 YAML 清单文件3.1 获取资源对象 YAML3.2 解析 YAML 清单文件&#xff08;1&#xff09;apiVersion查看 Kubernetes API 中全部的 API 组&#xff08;2&#xff09;kind查看 Kubernetes 中全部的对象资源类型&#xff08;3&#xff09;metadata&#xff08;4&#…

SpringBoot整合Mybatis方式2:使用注解方式整合Mybatis

SpringBoot整合Mybatis简介SpringBoot整合Mybatis方式2&#xff1a;使用注解方式整合Mybatis1.先用idea创建一个添加mybatis需要的相关依赖的工程。2.准备数据库和表3.创建表映射类4.创建mapper代理接口5.创建Service层和Service的实现层6.创建控制层&#xff08;也就是web层&a…

JQuery使用

简介 一个JavaScript的框架&#xff0c;简化了JS的语法和操作&#xff0c;定义了HTML属性操作、样式操作、DOM 操作等相关函数&#xff0c;实现了对ajax异步请求封装。提供了很多预定义函数的JS文件。 作用 简化部分JavaScript开发 使用步骤 1,引入Jquery 下载 地址1:http:/…

D-0015 红外接收硬件电路设计

红外接收硬件电路设计1 简介2 硬件电路实战3 红外遥控的原理4 主要参数5 电路设计要点1 简介 肉眼可见的光&#xff0c;按照波长进行排列依次为&#xff1a;红、成、黄、绿、青、蓝、紫。其中红光的波长范围为0.620.76μm&#xff1b;紫光的波长范围为0.380.46μm。比紫光波长…

[iOS]代码混淆

混淆有几点注意&#xff1a; 不能混淆系统方法 不能混淆init开头的等初始化方法 混淆属性时需要额外注意set方法 如果xib、 storyboard中用到了混淆的内容&#xff0c;需要手动修正。 可以考虑把需要混淆的符号都加上前缀&#xff0c;跟系统自带的符号进行区分。 混淆有风险&am…

MMEdu离线版的使用:实现石头剪刀布图像分类的检测

一、MMEdu离线版的使用 1.双击XEdu v1.0.exe解压缩到某个盘&#xff0c;会是一个文件夹XEdu 2.进入XEdu&#xff0c;双击运行“点我初始化.bat”&#xff0c;等待至运行结束命令提示符窗口自动关闭 3.双击运行“jupyter编辑器.bat”&#xff0c;将会打开一个网页版jupyter&…

记一次由于google新版本限制升级导致的跨域问题

记一次跨域问题 问题描述 系统集成到公司下面的门户网站&#xff0c;由于二级域名还没有申请下来只能先配置了我们的K8S域名 http://wire-qa.motortest.com/#/Data/systemNavigationK8s域名 http://wire-test.k8s-pv.motor.com/sce_web/index.html前端识别到跳转的如下地址后…

微服务介绍2

1 搭建项目 1.1 父项目的搭建 1.2 子项目的搭建 2 项目展示 1 搭建项目 1.1 父项目的搭建 步骤&#xff1a; 1 选择maven项目作为父项目&#xff0c;修改为1.8之后直接点击next 2 定义父项目的名称&#xff0c;修改Artifct Coordinates ---> GroupId 然后点击finsh就可以啦…

K8S部署后的使用:dashboard启动、使用+docker镜像拉取、容器部署

1、重置和清除旧工程&#xff1a;每个节点主机都要运行 kubeadm reset iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X 2、部署新的k8s项目&#xff1a; 只在主节点运行&#xff0c;apiserver-advertise-address填写主…

(附源码)计算机毕业设计JavaJava毕设项目美容院管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

HDC 2022 开发者主题演讲与技术分论坛干货分享(附课件)

11月4日-11月6日&#xff0c;HDC 2022在东莞成功举办&#xff0c;这是一场大规模落地的思维与技术的碰撞&#xff0c;众多业内专家到场&#xff0c;共话未来。其中&#xff0c;开发者主题演讲围绕增强的声明式开发体系&#xff0c;通过一个Demo实例讲解技术创新点&#xff0c;助…