蓝桥杯专项复习——双指针

news2025/4/12 15:07:48

目录

双指针算法:双指针算法-CSDN博客

最长连续不重复子序列

 P8783 [蓝桥杯 2022 省 B] 统计子矩阵


双指针优化思路:当存在重复枚举时,可以考虑是否能使用双指针进行优化

双指针算法:双指针算法-CSDN博客

最长连续不重复子序列

注意理解题目:这里的连续区间是指没有重复数字的区间,不是没有重复数字并且数字大小连续的区间,即1,2,5就是一个没有重复数字的连续区间

思路:

 可以直接遍历,但是时间会是O(n^2)级别,

即假设有一个区间1,2,3,1,首先对于1进行枚举,当遍历到最后一个1时结束,再进行下一个枚举即从2开始向后枚举,此时2,3被枚举了两次,即进行了重复枚举,可以在这里进行优化

使用双指针进行优化
前面的指针表示当前的位置,后面的指针表示当前数字能够达到的位置

#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N=100000+10;

int n;
int a[N];
int mx;

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	//使用双指针算法进行优化 
	int j=1; //慢指针 
	map<int,int> mp;//使用 一个桶来判断是否有重复的数字 
	for(int i=1;i<=n;i++)//快指针 
	{
		while(j<=n&&mp[a[j]]==0)//当mp[a[j]]==1时表示出现重复数字 
		{
			mp[a[j]]++;
			j++;
		}//while循环结束后j会多加一次,所以满足条件的长度为j-i不用+1
		mx=max(mx,j-i); 
		mp[a[i]]--;
		//取消标记,为下一次遍历做准备 
	}
	cout<<mx<<endl;
	
	return 0;
}

 P8783 [蓝桥杯 2022 省 B] 统计子矩阵

二维前缀和+双指针的优化

如果直接暴力枚举是O(n^4)不能过
由分析可知中间有些地方是会重复枚举,这时可以使用双指针进行优化
设置两个指针,当j指针所在位置的和大于k时移动i,让其和小于k
先列出所有的行n^2,再通过双指针对所有的列进行移动2m,最终是n^3级别

 

#include<bits/stdc++.h>
#define int long long 
using namespace std;

const int N=1000+10;

int pre[N][N],g[N][N];
int n,m,k;
int ans;

int ptr(int x1,int y1,int x2,int y2)
{
	return pre[x2][y2]-pre[x2][y1-1]-pre[x1-1][y2]+pre[x1-1][y1-1];
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			cin>>g[i][j];
			pre[i][j]=pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1]+g[i][j];
			//预处理前缀和 
		}
		
	for(int i=1;i<=n;i++)
	{
		for(int j=i;j<=n;j++)//j要从i开始 ,到n结束 
		{
			for(int l=1,r=1;l<=m;l++)//双指针遍历
			{
				while(r<=m&&ptr(i,l,j,r)<=k) 
					r++;
				ans+=r-l;
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}

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

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

相关文章

BetaFlight参数配置解读

BetaFlight参数配置解读 &#x1f4cc;相关篇《Betaflight固件编译和烧录说明》&#x1f955;各型号已编译好的配置文件资源&#xff08;.config&#xff09;&#xff1a;https://github.com/betaflight/unified-targets/tree/master/configs/default&#x1f33f;各型号配置头…

Java 容器源码分析

一、哈希表 1、引入 hash 表 在无序数组中按照内容查找&#xff0c;效率底下&#xff0c;时间复杂度是 O(n) 在有序数组中按照内容查找&#xff0c;可以使用折半查找&#xff0c;时间复杂度 O&#xff08;log2n&#xff09; 哈希表可以不进行比较&#xff0c;通过计算得到地…

【Java中级】11章、枚举 - java引用数据类型,枚举介绍、快速入门,了解枚举类的基本使用方式【1】

文章内容&#xff1a; 自定义实现枚举enum关键字实现枚举 ❤️内容涉及枚举的定义&#xff0c;快速入门&#xff0c;注意事项和小题巩固知识点 &#x1f308; 跟着B站一位老师学习的内部类内容&#xff0c;现写这篇文章为学习内部类的小伙伴提供思路支持&#xff0c;希望可以一…

Jmeter 插件【性能测试监控搭建】

1. 安装Plugins Manager 1.1 下载路径&#xff1a; Install :: JMeter-Plugins.org 1.2 放在lib/ext目录下 1.3 重启Jmeter&#xff0c;会在菜单-选项下多一个 Plugins Manager菜单&#xff0c;打开即可对插件进行安装、升级。 2. 客户端(Jmeter端) 2.1 安装plugins manager…

【ES系列】Elasticsearch从入门到精通保姆级教程 | 启篇

🔥 本系列将带你从零开始学习Elasticsearch,通过保姆级教程,手把手教你掌握这个强大的搜索与分析引擎。无论你是完全的新手,还是想系统学习ES的开发者,这个系列都能满足你的需求。 📚博主匠心之作,强推专栏: JAVA集合专栏 【夜话集】JVM知识专栏数据库sql理论与实战【…

Unity中Spine骨骼动画完全指南:从API详解到避坑实战

Unity中Spine骨骼动画完全指南:从API详解到避坑实战 一、为什么要选择Spine? Spine作为专业的2D骨骼动画工具,相比传统帧动画可节省90%资源量。在Unity中的典型应用场景包括: 角色换装系统(通过插槽替换部件)复杂连招系统(动画混合与过渡)动态表情系统(面部骨骼控制)…

C++Cherno 学习笔记day17 [66]-[70] 类型双关、联合体、虚析构函数、类型转换、条件与操作断点

b站Cherno的课[66]-[70] 一、C的类型双关二、C的union&#xff08;联合体、共用体&#xff09;三、C的虚析构函数四、C的类型转换五、条件与操作断点——VisualStudio小技巧 一、C的类型双关 作用&#xff1a;在C中绕过类型系统 C是强类型语言 有一个类型系统&#xff0c;不…

wordpress 利用 All-in-One WP Migration全站转移

导出导入站点 在插件中查询 All-in-One WP Migration备份并导出全站数据 导入 注意事项&#xff1a; 1.导入部分限制50MB 宝塔解决方案&#xff0c;其他类似&#xff0c;修改php.ini配置文件即可 2. 全站转移需要修改域名 3. 大文件版本&#xff0c;大于1G的可以参考我的…

【工具使用】在OpenBMC中使用GDB工具来定位coredump原因

在OpenBMC调试中&#xff0c;有时会产生coredump却不知道从哪里入手分析&#xff0c;GDB工具就可以提供帮助。 1 编译带GDB工具的镜像 OpenBMC镜像中默认没有加入GDB工具&#xff0c;因此首先需要编译一个带GDB工具的OpenBMC镜像用于调试。在recipes-phosphor/packagegroups/…

Linux系统(Ubuntu和树莓派)的远程操作练习

文章目录 一、实验一&#xff08;一&#xff09;实验准备&#xff08;二&#xff09;Ubuntu 下的远程操作&#xff08;三&#xff09;树莓派下的远程操作&#xff08;四&#xff09;思考 二、实验二1.talk程序2. C 编写 Linux 进程间通信&#xff08;IPC&#xff09;聊天程序 一…

高效创建工作流,可实现类似unreal engine的蓝图效果,内部使用多线程高效执行节点函数

文章目录 前言&#xff08;Introduction&#xff09;开发环境搭建&#xff08;Development environment setup&#xff09;运行&#xff08;Run test&#xff09;开发者&#xff08;Developer&#xff09;编译&#xff08;Compile&#xff09;报错 前言&#xff08;Introductio…

Design Compiler:语法检查工具dcprocheck

相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 dcprocheck是一个在Design Compiler存在于安装目录下的程序&#xff08;其实它是一个指向snps_shell的符号链接&#xff0c;但snps_shell可以根据启动命令名判…

aws(学习笔记第三十八课) codepipeline-build-deploy-github-manual

文章目录 aws(学习笔记第三十八课) codepipeline-build-deploy-github-manual学习内容&#xff1a;1. 整体架构1.1 代码链接1.2 全体处理架构 2. 代码分析2.1 创建ImageRepo&#xff0c;并设定给FargateTaskDef2.2 创建CodeBuild project2.3 对CodeBuild project赋予权限&#…

深度学习|注意力机制

一、注意力提示 随意&#xff1a;跟随主观意识&#xff0c;也就是指有意识。 注意力机制&#xff1a;考虑“随意线索”&#xff0c;有一个注意力池化层&#xff0c;将会最终选择考虑到“随意线索”的那个值 二、注意力汇聚 这一部分也就是讲第一大点中“注意力汇聚”那个池化…

京东店铺托管7*16小时全时护航

内容概要 京东店铺托管服务的*716小时全时护航模式&#xff0c;相当于给商家配了个全年无休的"运营管家"。专业团队每天从早7点到晚11点实时盯着运营数据和商品排名&#xff0c;连半夜流量波动都能通过智能系统秒级预警。这种全天候服务可不是单纯拼人力——系统自动…

遵循IEC62304YY/T0664:确保医疗器械软件生命周期合规性

一、EC 62304与YY/T 0664的核心定位与关系 IEC 62304&#xff08;IEC 62304&#xff09;是国际通用的医疗器械软件生命周期管理标准&#xff0c;适用于所有包含软件的医疗器械&#xff08;如嵌入式软件、独立软件、移动应用等&#xff09;&#xff0c;其核心目标是确保软件的安…

20250408-报错:pre_state = state同更新现象

项目场景&#xff1a; 基于强化学习解决组合优化问题 问题描述 # POMO Rolloutstate, reward, done self.env.pre_step()# next_state statewith autocast():while not done:# 执行动作并获取新状态和奖励selected, prob self.model(state)# 更新状态:因为self.env.step(s…

如何在服务器里部署辅助域

辅助域&#xff08;Additional Domain Controller&#xff0c;ADC&#xff09;是指在现有的Active Directory&#xff08;活动目录&#xff09;架构中&#xff0c;新增一个或多个域控制器以提高目录服务的可用性和可靠性。以下是辅助域的定义、功能和应用场景的详细说明&#x…

GNSS有源天线和无源天线

区别 需要外部供电的就是有源天线&#xff0c;不需要外部供电的是无源天线。 无源天线 一般就是一个陶瓷片、金属片等&#xff0c;结构简单&#xff0c;成本低廉&#xff0c;占用空间及体积小&#xff0c;适合于强调紧凑型空间的导航类产品。 不需要供电&#xff0c;跟设备直…

欧税通香港分公司办公室正式乔迁至海港城!

3月20日&#xff0c;欧税通香港分公司办公室正式乔迁至香港油尖旺区的核心商业区海港城!左手挽着内地市场&#xff0c;右手牵起国际航道——这波乔迁选址操作堪称“地理课代表”! 乔迁仪式秒变行业大联欢!感谢亚马逊合规团队、亚马逊云、阿里国际站、Wayfair、coupang、美客多…