【ybt】【数据结构 RMQ 课过 例3】与众不同

【ST表】【RMQ问题】与众不同 「完美序列」:一段连续的序列满足序列中的数互不相同。 A 想知道区间L,R之间最长的完美序列长度。 阅读详情

与众不同

题目链接:YbtOJ


在这里插入图片描述

解题思路

设 l a s t i last_i lasti​ 表示 i i i 上一次出现的位置。
设 p r e i pre_i prei​ 表示以 i i i 结尾的最长完美序列的启示位置,显然 p r e i = max ⁡ ( p r e i − 1 , l a s t a i ) pre_i=\max(pre_{i-1},last_{a_i}) prei​=max(prei−1​,lastai​​) 。
我们先处理出 l a s t last last 和 p r e pre pre ,然后二分出一个 l e n len len, l e n len len 的左边可以直接求出答案, l e n len len 的右边则可以用 s t st st 表求出,取最大值即可。

code

#include<iostream>
#include<cstdio>
#include<cmath>
#define IN 1000001
using namespace std;

int n,m;
int a[200010]; 
int pre[200010];
int last[2000010];
int st[200010][20];

int fd(int x,int y)
{
	int l=x,r=y,s=x;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(pre[mid]<x)
			l=mid+1,s=mid;
		else
			r=mid-1;
	}
	return s;
}

int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	pre[1]=last[a[1]+IN]=st[1][0]=1;
	for(int i=2;i<=n;i++)
	{
		pre[i]=max(pre[i-1],last[a[i]+IN]+1);
		st[i][0]=i-pre[i]+1;
		last[a[i]+IN]=i;
	}
	for(int j=1;j<=log2(n);j++)
		for(int i=1;i+(1<<j)-1<=n;i++)
			st[i][j]=max(st[i][j-1],st[i+(1<<j-1)][j-1]);
	while(m--)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		x++,y++;
		int len=fd(x,y);
		int ans=len-x+1;
		int k=log2(y-len);
		if(len<y)
			ans=max(ans,max(st[len+1][k],st[y-(1<<k)+1][k]));
		cout<<ans<<endl;
	}
}
[NOIP2011真题]选择客栈 题目背景 NOIP2011提高组 DAY1 试题。题目描述 丽江河边有 n 家很有特色的客栈,客栈按照其位置顺序从 1 到 n 编号。每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店均有各自的最低消费。两位游客一起去丽江旅游,他们喜欢相同的色调,又想尝试两个不同的客栈,因此决定分别住在色调相同的两家客栈中。晚上,他们打算选择一 阅读详情

相关推荐

1543:【例 3】与众不同-2019.12.09.pdf

1543:【例 3】与众不同-2019.12.09

1543:与众不同(RMQ+二分细节处理

#include <bits/stdc++.h> using namespace std; const int logn = 21; const int N = 2e5+10; int f[N][logn + 1], Logn[N + 1]; int n,m,st[N],a[N];map<int,int> pr; void pre() { Logn[1]=0;Logn[2]=1; for(int i=3;i<N;i++) Logn[i]=Logn[i/2]+1;

我们仍未知道那天所看见的花的名字。 707

EG800K 4G模块AT指令避坑指南:让你的STM32物联网项目稳定连接云端

本文详细解析了EG800K 4G模块在STM32物联网项目中的AT指令应用避坑指南,涵盖从底层协议到云端稳定的全链路优化策略。通过实战案例和防护机制,帮助开发者解决常见通信陷阱,提升云端通信的稳定性和效率。

weixin_26834815的博客 288

快乐地打牢基础(3)——RMQ问题

RMQ问题是Range Maximum(Minimum) Query的缩写,就是查询某个区间的最大最小值,可以使用线段树,ST表,笛卡尔树上求LCA等多种方法求。ST表由于之前已经写过了博客,所以直接上题。 一本通 OJ:http://ybt.ssoier.cn:8088/ 【例题1】 1541 数列区间最大值 题意: 输入一串数字,给你 M 个询问,每次询问就给你两个数字 X,Y,要求你说出...

Miserable_ccf的博客 595

Mybatis Provider注解实现批量插入

需求 借助mybatis 的provider实现一个比较通用的,批量插入数据接口。 Mapper接口 第一参数为需要批量插入的数据,第二个参数为对应实体类的class public interface BaseDao<T> { @InsertProvider(type = BaseProvider.class, method = "batchInsert") int batchInsert(@Param("lists") List<T&gt

小楼夜听雨的博客 2417

超越音频!STM32 SAI接口在AD7768高速ADC采集中的妙用(含PCB布局指南)

本文深入探讨了如何将STM32的SAI接口应用于AD7768高速ADC的数据采集系统,超越了其传统的音频应用范畴。文章详细解析了SAI协议与ADC时序的匹配方法,提供了从CubeMX配置、DMA数据搬运到关键PCB布局指南的完整实战方案,旨在帮助工程师实现稳定、高精度的工业级高速数据采集。

efc12345678的博客 304

YBTOJ C. 【例题3】与众不同

思路:首先应该想到dp,我们约定pre[i] 为i号位为结尾的数的起始位置,f[i]为i号位为结尾的最长序列长度,不难得到 pre[i]=max(pre[i-1],last[a[i]]+1) f[i]=i-pre[i]+1。因为上面的式子可以得到pre[i] 为一个单调不降序列,于是我们可以用二分来寻找分界点,那么第二种序列长度就为pos-l+1,下面就是处理第一种答案了,这里运用。对于一个访问区间有两种序列长度:1.整个序列被包含在区间内 2.整个序列被不完全包含在区间内。算法来加速区间最大值查询。

DL24yanjun的博客 398

方差分解分析变量筛选与显著性计算

冗余分析(redundancy analysis,RDA)是一种回归分析结合主成分分析的排序方法,也是多响应变量(multiresponse)回归分析的拓展。在进行VPA时,首先就要对这些环境因子进行一个分类,然后在约束其它类环境因子的情况下,对某一类环境因子进行排序分析,这种分析也成为偏分析,即partialRDA。在地球环境科学的实际应用中,可以基于VPA结果得出不同类型的环境因素(如何气候、土壤性质以及植物)对生物群落组成(如植被丰度,微生物群落)的解释程度。对于由或创建的排序对象,函数。

wlh2067的博客 2520

信息学奥赛一本通 1543:【例 3】与众不同

题目摘要: 本题要求处理整数序列,查询区间内最长不重复子段的长度(完美序列)。通过预处理每个元素结尾的最长不重复子段起始位置(st数组)和长度(len数组),利用ST表或线段树快速查询区间最大值。关键点包括:处理负数下标(数值偏移或离散化),二分查找确定分界点p,比较两部分结果(重叠子段长度与右侧区间最大值)。解法1使用ST表实现O(1)查询,解法2采用线段树。最终输出查询区间内的最优解,时间复杂度为O(nlogn + mlogn)。

君义NOIP的博客 1431

【OpenFOAM】-olaFlow-算例4- irreg45degTank

不规则波浪模拟

ou_no的博客 2117

搞定ESD(七):静电放电问题典型案例分析(二)

静电放电噪声耦合的方式主要是:传导耦合与辐射耦合,辐射耦合主要以磁场耦合、 电场耦合为主要形式。电场耦合发生的主要条件是:静电放电高频在参考地平面寄生电感中产生电平波动,平行于参考地平面上的较长信号布线就很容易通过分布电容发生电场耦合。根据高速信号回流路径的特性可知,其回流路径是贴近信号布线下方,或者信号两侧,若信号回流路径跨分割后,环路面积会随之增大;信号环路面积大从EMI角度看其空间辐射更强,从EMS角度看则更容易耦合外部噪声干扰(雷击浪涌、EFT、ESD、RS)。

记得诚 2801

【Ybt OJ】[数据结构 第3章] RMQ问题 (ST表) [前半章]

「「「数据结构」」」第333章 RMQRMQRMQ问题(((前222题))) 目录: A.数列区间 B.静态区间 A.A.A. 例题111 数列区间 洛谷linklinklink 分析: ststst表 一般用于解决这种RMQRMQRMQ问题(((区间最值))) 之前写的讲的不是很清楚linklinklink ststst表是倍增的思想 如果fi,jf_{i,j}fi,j​ 表示从iii位置开始2j2^j2j个数的最大值 如fi,3f_{i,3}fi,3​ 就是指fif_ifi​ fi+1f_{i+1}

绫 172

vTestStudio保姆教程之从0到1搭建软件环境

学习HIL测试的必经之路,保姆级教学VT从搭建到测试。

欢迎来到eee的博客 4190

【Ybt OJ】[数据结构 第3章] RMQ问题 (ST表) [后半章]

「「「数据结构」」」第333章 RMQRMQRMQ问题(((后222题))) 目录: C.与众不同 D.矩阵最值 C.C.C. 例题333 与众不同 分析: headihead_iheadi​表示以iii结尾完美序列 的起点 lenilen_ileni​表示以iii结尾最长完美序列 的长度 locxloc_xlocx​表示最近的xxx出现的位置 注意 ∣ai∣<=106|a_i|<=10^6∣ai​∣<=106的 那你就要处理负数 把下标加上10610^6106 然后二分起点 再sts

绫 205

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

YbtOJ RMQ问题课堂过关 例3 与众不同【ST表】【DP】

思路 这道题我们首先设 lastilast_ilasti​ 表示盈利值为 iii 上一次出现的位置, 然后设 pip_ipi​ 表示以 iii 为结尾的最长完美序列的起始位置,用last DP求出p后,能得到答案为 i−pi+1i-p_i+1i−pi​+1. 这时候对于一个区间 [l,r][l,r][l,r] ,我们设一个now ,now左边 pi<lp_i<lpi​<l ,可直接求出答案,now右边则可以用st表求出 [now+1,r][now+1,r][now+1,r] 的最大值,..

JA_yichao欢迎你 cnblogs账号:https://www.cnblogs.com/mayichao/ 246

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【ybt高效进阶4-3-1】【luogu P3865】数列区间 / 【模板】ST表

给你一个数列,多次询问,每次问一个区间中的最大值。

欢迎您的光顾awa 216

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【算法•日更•第十八期】信息奥赛一本通1600:【例 4】旅行问题题解

  废话不多说,直接上题: 1600:【例 4】旅行问题 时间限制: 1000 ms 内存限制: 524288 KB提交数: 96 通过数: 36 【题目描述】 原题来自:POI 2004 John 打算驾驶一辆汽车周游一个环形公路。公路上总共有n车站,每站都有若干升汽油(有的站可能油量为零),每升油可以让汽车行驶一千米。John 必...

weixin_30853329的博客 402

CSU训练分类

√√第一部分 基础算法(#10023 除外) 第 1 章 贪心算法 √√#10000 「一本通 1.1 例 1」活动安排 √√#10001 「一本通 1.1 例 2」种树 √√#10002 「一本通 1.1 例 3」喷水装置 √√#10003 「一本通 1.1 例 4」加工生产调度 √√#10004 「一本通 1.1 例 5」智力大冲浪 √√#10005 「一本通 1.1 练习 1」数列极差 √...

weixin_30314631的博客 1697

《ybtoj高效进阶》第四部分第三章例题3 与众不同

题目大意 求某个给定序列a中l到r中最长的连续子序列,要求选择序列中不能有重复数字。同一序列,多个询问 思路 显然,设pip_ipi​为以i结尾的最长序列起始点,显然有pi=max(pi−1,lastai+1)(1<=i<=n)p_i=max(p_{i-1},last_{a_i}+1)(1<=i<=n)pi​=max(pi−1​,lastai​​+1)(1<=i<=n),其中lastlastlast表示某个数上一次出现的位置,我们有ppp不下降。 再设fif_ifi​为i

SSL_WCR 380

【唐氏题目 nt题】与众不同

与众不同## 题目描述A是某公司的CEO,每个月都会有员工把公司的盈利数据送给A,A是个与众不同的怪人,A不注重盈利还是亏本,而是喜欢研究「完美序列」:一段连续的序列满足序列中的数互不相同。A想知道区间[L,R]之间最长的完美序列长度。## 输入格式第一行两个整数N,M,N表示连续N个月,编号为0到N−1,M表示询问的次数;第二行N个整数,第i个数表示该公司第i个月的盈利值ai;接下来M行每行两个整数L,R,表示A询问的区间。## 输出格式。

2301_77025310的博客 754

一本通1543与众不同

1543:【例 3】与众不同 时间限制: 1000 ms 内存限制: 524288 KB 题目描述 A 是某公司的 CEO,每个月都会有员工把公司的盈利数据送给 A,A 是个与众不同的怪人,A 不注重盈利还是亏本,而是喜欢研究「完美序列」:一段连续的序列满足序列中的数互不相同。 A 想知道区间[L,R]之间最长的完美序列长度。 ...

weixin_30408739的博客 1126

「一本通 4.2 例 3」与众不同 (loj10121)

题目描述 A 是某公司的 CEO,每个月都会有员工把公司的盈利数据送给 A,A 是个与众不同的怪人,A 不注重盈利还是亏本,而是喜欢研究「完美序列」:一段连续的序列满足序列中的数互不相同。 A 想知道区间 [L,R][ 之间最长的完美序列长度。 输入格式 第一行两个整数 N,M,N 表示连续 N 个月,编号为 0 到 N−1,M 表...

weixin_30466421的博客 614

LOJ #10121. 「一本通 4.2 例 3」与众不同

题目描述 A 是某公司的 CEO,每个月都会有员工把公司的盈利数据送给 A,A 是个与众不同的怪人,A 不注重盈利还是亏本,而是喜欢研究「完美序列」:一段连续的序列满足序列中的数互不相同。 A 想知道区间 [L,R][L,R][L,R] 之间最长的完美序列长度。 输入格式 第一行两个整数 N,MN,MN,M,NNN 表示连续 NNN 个月,编号为 000 到 N−1N-1N−1,MMM 表...

YYHS_WSF的博客 2194

#10121. 「一本通 4.2 例 3」与众不同(ST算法预处理+二分询问时间)

https://loj.ac/problem/10121 思路: 转载于:https://www.cnblogs.com/songjian-jiansong/p/10320538.html

aq77210的博客 553

「一本通 4.2 例 3」与众不同

链接 这道题预处理有点烦 因为查询的时候分两块 一个st表 一个贪心直接加减 二分找中间值 #include<bits/stdc++.h> #define re return #define ll long long #define inc(i,l,r) for(int i=l;i<=r;++i) using namespace std; ...

weixin_30660027的博客 482
上一篇: 【ybt】【数据结构 RMQ 课过 例2】静态区间
下一篇: 【ybt】【数据结构 RMQ 课过 例4】矩阵最值
SSL_GYX
博客等级 码龄7年 103粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值