蓝桥杯每日一题(哈希、单调队列)

2058 笨拙的手指

二进制所有的可能保存进哈希表,三进制找出所有的可能判断哈希表中是否有数字。

注意一种情况就是修改完之后出现前导零。直接continue;

学到了,某些条件的限制不一定要在循环条件上,可以直接在循环体内。

#include<bits/stdc++.h>
using namespace std;
const int N=50010;
//2058 笨拙的手指unordered_set<int>hashh;
//某进制转化为十进制
int base(string s,int n )
{int res=0;for(int i=0;i<s.size();i++){res=res*n+(s[i]-'0');}return res;
}
int main()
{string s,u;cin>>s;cin>>u;for(int i=0;i<s.size();i++){string t=s;t[i]^=1;//把字符串某一位修改了之后if(t.size()>1&&t[0]=='0')continue;hashh.insert(base(t,2));//cout<<base(t,2)<<endl;}for(int i=0;i<u.size();i++){for(int j=0;j<3;j++){string t=u;if(t[i]==(j+'0'))continue;t[i]=(j+'0');if(t.size()>1&&t[0]=='0')continue;//cout<<"3进制"<<base(t,3)<<endl;if(hashh.count(base(t,3)))cout<<base(t,3)<<endl;}}
}

//840. 模拟散列表

string类型的数据即使有一个字符也要 s=="n";这样比较。

//841字符串哈希

哈希不一定是把原来的东西放进哈希表,可以将其转化为数字,后序计算某个值的时候可以直接通过子串的位置得到。

在求某个区间的字符串的值的时候,注意边界。注意理解h数组存的值是以i为个位的字符串的哈希值。

#include<bits/stdc++.h>
using namespace std;
const int N=100010;
typedef unsigned long long int ull;
//841 字符串哈希
char s[N];
ull h[N],p[N];
int getnum(int a,int b)
{return h[b]-h[a-1]*p[b-a+1];
}int main()
{int n,m;cin>>n>>m;scanf("%s",s+1);h[0]=0;p[0]=1;for(int i=1;i<=n;i++){p[i]=p[i-1]*131;h[i]=h[i-1]*131+s[i];}int l1,r1,l2,r2;for(int i=0;i<m;i++){cin>>l1>>r1>>l2>>r2;if(getnum(l1,r1)==getnum(l2,r2)){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}}}

830.单调栈

给出一个数组,要求求出每个数左边第一个小于其的数是谁。

指定是向前去找:所以想到有一种:如果一个数A左边存在一个大于他的数B。B这个数就没什么用了。也就是如果前面有一大串数,突然出现一个小数,前面的这些数都没用了。

所以每次给出一个数向前找的时候,就剪掉这些数。避免不必要的遍历。

这个过程是由一个idx实现的。每次循环都实时更新idx;

#include<bits/stdc++.h>
using namespace std;
const int N=100010;
typedef unsigned long long int ull;
//830 单调栈;
int a[N];
int main()
{int n;int t=0;//一开始的时候是没有数据的cin>>n;while(n--){int num;cin>>num;while(t>0&&a[t]>=num)t--;//向前找合适的if(t==0){cout<<-1<<" ";}else{cout<<a[t]<<" ";}a[++t]=num;}}

//154 滑动窗口

和找离某个数左边最近的小于它的值的时候。每次新到一个数进来都会把左边所有大于它的数删掉。这里维持的是一个有序序列。

滑动窗口也是这样,维持一个有序的数组。每次只要新吞入一个数,它产生的作用就是把它前面所有大于它的数都淘汰掉,另外还有一个操作就是每次向右移动的时候。左边要删掉(但是为什么要判断一下队头呢,因为有可能从滑动窗口出来的点已经被删除了)

#include<bits/stdc++.h>
using namespace std;
const int N=1000010;
deque<int>q;
int n,k;
int a[N];
int main()
{cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n;i++){while(!q.empty()&&q.back()>a[i])q.pop_back();if(i-k>=1&&q.front()==a[i-k])q.pop_front();q.push_back(a[i]);if(i>=k)cout<<q.front()<<" ";}cout<<endl;deque<int>p;for(int i=1;i<=n;i++){while(!p.empty()&&p.back()<a[i])p.pop_back();p.push_back(a[i]);if(i-k>=1&&p.front()==a[i-k]){p.pop_front();//cout<<"*******************"<<endl;//cout<<p.front()<<"此时有几个"<<p.size()<<endl;}if(i>=k)cout<<p.front()<<" ";}
}

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

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

相关文章

运维:记一次寻找定时任务并删除的经历

前言 我相信接手别人的服务器、或者在没有任何文档的情况去看自己原先的服务器,都或多或少会遇到莫名其妙的服务器独有规则。 比如你服务本身跑的好好的,突然啪的一下,没了! 什么原因导致的呢?其中,很大可能是定时任务在作祟。 原因分析 本次,我遇到的问题是:在Ubuntu系…

一分钟了解遥感中卫星、传感器、波段及数据之间的关系

感是利用卫星、飞机或其他载具上的传感器对地球表面进行观测和测量的科学技术。以下是一些常见的遥感相关术语: 卫星(Satellite):在遥感中,卫星是指绕地球轨道运行的人造卫星,其主要任务是携带各种传感器从空间中对地球表面进行观测。 传感器(Sensor):传感器是安装在卫…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:ImageSpan)

Text组件的子组件&#xff0c;用于显示行内图片。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 ImageSpan(value: ResourceStr | PixelMap) 参数&#xff1a; 参数名参数类…

抓包工具获取请求信息

Charles 下载安装 下载 官方下载地址&#xff1a;https://www.charlesproxy.com/latest-release/download.do 下载后傻瓜式安装就好&#xff0c;这个官方的需要激活&#xff0c;可以选择绿色版或者学习版 绿色版 绿色中文版&#xff1a;https://soft.kxdw.com/pc/Charles.z…

【代码】Android|获取存储权限并创建、存储文件

版本&#xff1a;Android 11及以上&#xff0c;gradle 7.0以上&#xff0c;Android SDK > 29 获取存储权限 获取存储权限参考&#xff1a;Android 11 外部存储权限适配指南及方案&#xff0c;这篇文章直接翻到最下面&#xff0c;用XXPermissions框架。它漏了这个框架的使用方…

opencv实现视频人脸识别

一. 实现指定图像的人脸识别 注意&#xff1a; 以下实例参考《OpenCV轻松入门面向Python》李立宗著&#xff0c;使用python语言&#xff0c;编辑器为PyCharm&#xff0c;且都运行成功。 1.dface3.jpg图片文件和当前代码放在同一级目录下。 2.级联分类器文件和当前代码文件放在…

MapReduce-Partition分区

Partition分区 1.默认Partitioner分区 (key.hashcode() & Interger.MAX_VALUE) % numReduceTasksnumReduceTasks默认为&#xff1a;1 //输出文件一个默认分区根据key的hashCode对ReduceTasks个数取模。 用户控制那个key存储到那个分区2.手动设置分区 //设置分区 job.set…

笔记78:软件包管理工具 apt 详解(包含常用 apt 命令介绍)

一、Ubuntu 的包管理工具 apt 过去&#xff0c;软件通常是从源代码安装的&#xff0c;安装步骤为&#xff1a;​​​​​​ 在Github上下载该软件的源码文件&#xff1b;查看Github上这个软件项目中提供的自述文件&#xff08;通常包含配置脚本或 makefile 文件&#xff09;&a…

软件架构的风格

1.数据流风格 数据流风格中&#xff0c;所有的数据按照流的形式在执行过程中前进&#xff0c;不存在结构的反复和重构&#xff0c;就像工厂中的汽车流水线一样&#xff0c;数据在流水线的各个节点上被加工。每完成一个环节&#xff0c;数据流都会被送入下一个环节&#xff0c;最…

Harbor二次开发前端环境搭建

1 前端开发环境搭建 &#xff08;1&#xff09;拉取分支代码 &#xff08;2&#xff09;前端开发推荐使用VsCode编辑器打开项目 打开 harbor\src\portal 文件夹&#xff0c;该文件夹为Harbor对应的前端代码所在位置 &#xff08;3&#xff09;在portal文件夹下创建名为 pro…

【Springer出版 · EI检索】| 第二届先进无人飞行系统国际会议(ICAUAS 2024)

会议简介 Brief Introduction 2024年第二届先进无人飞行系统国际会议(ICAUAS 2024) 会议时间&#xff1a;2024年6月14日-16日 召开地点&#xff1a;中国南昌 大会官网&#xff1a;ICAUAS 2024-2024 2nd International Conference on Advanced Unmanned Aerial Systems2024 2nd …

java SSM汽车租赁管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM汽车租赁管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用…

朴素贝叶斯基本原理sklearn实现

理论 先验概率&#xff1a;根据以往的分析经验得到的概率&#xff0c;先验概率不需要样本数据 后验概率&#xff1a;根据数据的特征进行分析 联合概率&#xff1a;几个事件同时发生的概率&#xff0c;P(瓜熟&#xff0c;瓜蒂脱落&#xff09; 定义 贝叶斯分类是一类分类算法的…

江大白 | 万字长文,算法工程师的深度经验总结!(建议阅读收藏!)

本文来源公众号“OpenCV与AI深度学习”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;万字长文&#xff0c;算法工程师的深度经验总结&#xff01; 以下文章来源于知乎&#xff1a;机智的叉烧 链接&#xff1a;https://zhuanlan…

【Spring高级】第3讲 Bean的生命周期

目录 基本的生命周期后处理器总结 基本的生命周期 为了演示生命周期的过程&#xff0c;我们直接使用 SpringApplication.run()方法&#xff0c;他会直接诶返回一个容器对象。 import org.springframework.boot.SpringApplication; import org.springframework.context.Config…

JAVA实战开源项目:智能停车场管理系统(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系统管理员功能1. 停车位模块2. 车辆模块3. 停车记录模块4. IC卡模块5. IC卡挂失模块 三、界面展示3.1 登录注册3.2 车辆模块3.3 停车位模块3.4 停车数据模块3.5 IC卡档案模块3.6 IC卡挂…

opengl 学习(三)-----纹理

纹理就是贴图 分类前提demo效果解析 分类 前提 需要使用一个库来处理图片&#xff1a;#include <stb_image.h> https://github.com/nothings/stb 你下载好了之后&#xff0c;把目目录包含了就好 然后再引入 #define STB_IMAGE_IMPLEMENTATION #include "stb_i…

QEMU源码全解析 —— virtio(27)

接前一篇文章: 上一回解析了setup_vq函数的前3步,本回继续解析余下的步骤。为了便于理解和加深印象,再次贴出setup_vq函数的源码,在Linux内核源码/drivers/virtio/virtio_pci_modern.c中,代码如下: static struct virtqueue *setup_vq(struct virtio_pci_device *vp_dev…

git删除comimit提交的记录

文章目录 本地的删除远程同步修改上次提交更多详情阅读 本地的删除 例如我的提交历史如下 commit 58211e7a5da5e74171e90d8b90b2f00881a48d3a Author: test <test36nu.com> Date: Fri Sep 22 20:55:38 2017 0800add d.txtcommit 0fb295fe0e0276f0c81df61c4fd853b7a00…

基于java的企业设备管理系统设计与实现

1、引言 设计结课作业,课程设计无处下手&#xff0c;网页要求的总数量太多&#xff1f;没有合适的模板&#xff1f;数据库&#xff0c;java&#xff0c;python&#xff0c;vue&#xff0c;html作业复杂工程量过大&#xff1f;毕设毫无头绪等等一系列问题。你想要解决的问题&am…