#10042. 「一本通 2.1 练习 8」收集雪花

news2024/9/17 5:23:34

题目描述

不同的雪花往往有不同的形状。在北方的同学想将雪花收集起来,作为礼物送给在南方的同学们。一共有 n 个时刻,给出每个时刻下落雪花的形状,用不同的整数表示不同的形状。在收集的过程中,同学们不希望有重复的雪花。你可以从任意 a 时刻开始,在 b 时刻停止。a 到 b 时刻中间的雪花也都将被收集。他们希望收集的雪花最多。

输入格式

第一行一个正整数 n;

第 2 行 n 个非负整数表示 n 个时刻雪花的形状。

输出格式

最多能收集雪花的数量。

样例

输入

5
1 2 3 2 1

输出

3

数据范围与提示

对于 97 分的数据, 1 ≤ n ≤ 1 0 6 , 0 ≤ x i ≤ 1 0 8 1\le n \le 10^6, 0\le x_i \le 10^8 1n106,0xi108。(为原始数据)

应用户要求,加入 3 分的数据, 1 ≤ n ≤ 1 0 6 , 0 ≤ x i ≤ 1 0 9 1\le n\le 10^6,0\le x_i\le 10^9 1n106,0xi109

又是一个不用哈希表的哈希题

大致思路

根据题意,我们需要找到最长不重复子序列,那么就可以借助强大的STL库中的map了

map<int,int> mapp;
unordered_map<int,int> mapp;

其中map基于红黑树实现,而unordered_map基于哈希实现,unordered_map的效率要快于普通的map,但必须在c++11及以上使用

for(int i=1;i<=n;i++){
		if(mapp[k[i]]==0){
			sum++;
			mapp[k[i]]=1;
		}

查询当前数有没有出现过,若无,则标记出现过。

else {
			while(mapp[k[i]]!=0){
				mapp[k[lcnt]]--;
				sum--;
				lcnt++;
			}
			mapp[k[i]]++;sum++;
		}

若当前数出现过,则从前面开始找到第一个重复的,过程内的所有数退回标记,即不选
最后max即可

ans=max(ans,sum);

AC CODE

#include<bits/stdc++.h>
using namespace std;
int ans=0,sum=0,n,lcnt=1,k[10000099];
/*unordered_*/map<int,int>mapp;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){![请添加图片描述](https://img-blog.csdnimg.cn/6fdf7246100748e79d1610bc49436ea0.jpeg)

		cin>>k[i];
	}
	for(int i=1;i<=n;i++){
		if(mapp[k[i]]==0){
			sum++;
			mapp[k[i]]=1;
		}
		else {
			while(mapp[k[i]]!=0){
				mapp[k[lcnt]]--;
				sum--;
				lcnt++;
			}
			mapp[k[i]]++;sum++;
		}
		ans=max(ans,sum);
	}
	cout<<ans;
	return 0;
}

附封面

请添加图片描述

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

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

相关文章

Tomcat【redis-session共享】

目录 1、创建虚拟主机&#xff08;01-02&#xff09;相同【192.168.200.121、192.168.200.122】 2、LB配置文件【192.168.200.120】 3、tomcat节点配置TomcatClusterRedisSessionManager方式实现redis共享&#xff08;01-02&#xff09;相同 4、安装redis、配置【192.168.20…

智慧餐饮未来:点赋科技智能饮品机器人带来的变革

随着科技的不断发展&#xff0c;智慧餐饮作为餐饮行业的新兴概念已经不再只是简单的餐厅智能化&#xff0c;而是包括了数字化、智能化和现代化等多个方面。点赋科技智能饮品机器人是智慧餐饮中最具代表性的之一&#xff0c;它的发展将引领智慧餐饮行业的未来方向。 首先&#x…

TIA博途Wincc中制作电机风扇或水泵旋转动画的具体方法示例

TIA博途Wincc中制作电机风扇或水泵旋转动画的具体方法示例 如下图所示,打开TIA博途软件,新建一个项目,添加一个1215 PLC,双击进入设备组态,设置属性—常规—系统和时钟存储器,勾选“启用系统存储器字节”、“启用时钟存储器字节”, 如下图所示,添加一个全局DB块,这里…

【Java】02--变量与数据类型Scanner

文章目录 1.什么是常量&#xff0c;什么是变量2.数据类型2.1什么是数据类型转换 3.为什么要使用Scanner 1.什么是常量&#xff0c;什么是变量 你只需要记住两点&#xff1a; 常量&#xff1a;就是一种不会根据环境而改变的数据&#xff0c;例如&#xff1a;圆周率。 变量&…

网络io模型、同步异步及Sanic和uvloop

网络io模型及基础概念 概念说明 用户空间与内核空间 操作系统的核心是内核&#xff0c;独立于普通的应用程序&#xff0c;可以访问受保护的内存空间&#xff0c;也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核&#xff08;kernel&#xff09;&#xff0…

银河麒麟系统安装mysql数据库[mysql-5.7.28-linux-glibc2.12-x86_64]

银河麒麟系统安装mysql数据库 1.1 准备材料 mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz MySQL5.7下载地址 https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz 1.1 安装前准备工作 1、检查是否已经安装MySQL [rootlocalhost ~]# rpm …

使用虚拟引擎创建海盗船长角色分解

介绍 你好&#xff01;我叫 Stapan&#xff0c;我是电影和电影的角色艺术家&#xff0c;我有在动画工作室担任自由艺术家和角色艺术家的经验&#xff0c;现在我正在与 Artem Gansior 领导的 ODEE 团队一起制作一部短片。 参考 对于这个项目&#xff0c;最初的角色概念是由超…

MAYA曲线粒子

不从粒子中心发射 nParticleShape1.massrand(0.5,0.7);

【Linux】Linux服务器硬件条件的查看

【Linux】Linux服务器硬件条件的查看 文章目录 【Linux】Linux服务器硬件条件的查看1. CPU条件查看1.1 查看CPU 个数1.2 查看 CPU 物理核数1.3 查看CPU的运行模式1.4 查看 CPU 的型号 2. GPU 条件查看3. 查看磁盘空间、内存、Linux内核当前的系统版本号3.1 磁盘空间3.2 内存3.3…

电源自动化测试系统一站式软硬件解决方案ATECLOUD-Power

*测试系统&#xff1a;本系统是专门针对各类电源模块测试的一体化智能解决方案&#xff0c;此框架结构可根据客户实际测试需求以及预算进行调整&#xff0c;经济适用。 *测试产品&#xff1a;DC-DC电源模块、AC-DC电源模块、车用电源模块、机载电源模块、军用电源模块、特种电源…

A2B音频传输误码率测量方法

+hezkz17进数字音频系统研究开发交流答疑 如何测量音频传输误码率? 2023/6/27 14:03:58 要测量音频传输误码率,可以采取以下步骤: 选择合适的测试设备和仪器:使用专门用于音频传输测试的设备,例如音频信号发生器、示波器和频谱分析仪等。 设置测试场景:确保测试环境符合…

C语言time(NULL)学习

根据资料&#xff1b;如下一段代码&#xff1b; clock_t a,b; float cputime; atime(NULL);for (intz0;z<10000000;z){ float f0; for (int i 0; i<n; i)f h_idata[i]; }btime(NULL); cputime(float)(b-a); printf("cuptime%fmseconds\n",cputime); 前后2个…

Linux——2Linux基础命令

目录 2.1 Linux的目录结构 2.2 Linux命令入门 ls命令 Home目录和工作目录 2.3 目录切换相关命令 cd 切换工作目录 pwd 查看当前工作目录 2.4 相对路径、绝对路径和特殊路径符 相对路径和绝对路径 特殊路径符 2.5 创建目录命令mkdir 2.6 文件操作命令 touch、cat、…

文本分析-使用jieba库实现TF-IDF算法提取关键词

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

合宙Air724UG Cat.1模块硬件设计指南--外部SPI Flash

概述 我们可以通过标准的SPI接口和QSPI接口来外挂flash。区别如下 使用标准SPI接口外挂flash&#xff0c;需要自己实现flash驱动&#xff0c;和自己移植文件系统 使用QSPI接口外挂flash&#xff0c;不需要自己实现flash驱动&#xff0c;也不需要移植文件系统 。通过mount接口挂…

医院电气能源管理与节能措施讨论

摘要&#xff1a;随着我国经济建设的不断加快&#xff0c;我国能源消耗也越来越大&#xff0c;如何通过电气能源管理实现节能是各行各业都在研究的课题。医院作为我国重要的医疗服务机构&#xff0c;能源管理是医院管理中的重要组成部分。本文将针对医院电气能源管理与节能措施…

maven Nexus 私库安装使用总结

maven Nexus私库安装使用总结 大纲 nexus安装总结nexus使用总结域名配置admin账号密码修改创建仓库组创建仓库创建权限创建角色创建用户mvn deploy 部署配置 nexus安装总结 本例子使用的是常见的nexus2.x版本 注意需要先安装JDK Nexus 专业版是需要付费的&#xff0c;这里…

硬件学习 软件 Cadence day11 PCB 设计中 临时 的翻转/旋转快捷键设置等

1. PCB设计中多种快捷键设置 (临时的) 1.1 旋转 90 快捷键设置 &#xff08;角度自己可以改 &#xff09; alias ~R angle 90 #CtrlR 1.2 元器件 底层 和 顶层交换的快捷键 &#xff08;临时的&#xff09; alias ~F mirror #Ctrl F 参考文章&#xff1a;Cadenc…

数据结构--单链表的建立

数据结构–链表的建立 目标&#xff1a; Step 1:初始化一个单链表 Step 2:每次取一个数据元素&#xff0c;插入到表尾/表头 尾插法建立单链表 代码实现 typedef struct LNode {int data;struct LNode *next; }LNode, *LinkList;LinkList List_TailInsert(LinkList &L) {…

vditor 自定渲染,lute.js api

渲染器函数 目前支持的渲染回调场景如下&#xff1a; 即使渲染&#xff1a;IR -> SpinVditorIRDOM 分屏&#xff1a;sv -> SpinVditorSVDOM 所见所得&#xff1a;wysiwyg -> SpinVditorDOM // 自定义回调 vue 为例子 after: function () {this.vditor.vditor.lute.Se…