首页 > 其他分享 >U423621 [HDK - NRC] Sqen Paradox

U423621 [HDK - NRC] Sqen Paradox

时间:2024-05-03 21:46:39浏览次数:17  
标签:Paradox U423621 询问 样例 NRC int 区间 Sqen

[HDK - NRC] Sqen Paradox

题目描述

给定一个长度为 \(n\) 的数列 \(S\).

询问在给定区间 \([l,r]\) 内最长的没有重复元素的区间长度.

输入格式

第一行两个整数 \(n,m\).

第二行 \(n\) 个整数,描述数列 \(S\).

随后 \(m\) 行,每行一个询问.

输出格式

\(m\) 行,请你对每个询问操作输出一行答案.

样例 #1

样例输入 #1

5 3
1 2 3 3 4
1 3
2 4
1 5

样例输出 #1

3
2
3

提示

样例解释

  1. 询问 1 3 ,连续的最长区间为 \([1,3]\).

  2. 询问 2 4,区间为 \([2,3]\).

  3. 询问 1 5,区间为 \([1,3]\).

数据约定

输入数据满足 \(n,m\le 10^{5},S_{i}\le 10^{9}\).

解析

(以下做法来自 \(GGrun\))

题干很简单,乍一看线段树呀,分块呀等数据结构。

但其实这道题要简单的多。

既然 找"没有重复元素的"区间,那么我们可以维护一个类似前缀的东西。

也就是找出每个点能向左延长多少。

所以只需要找出最后一个出现重复的数据就好了。

如图,\(1...6\) 前面都没有和自己重复的,直到又碰到一个 \(4\) ,

\(7\) 前面虽然没有和自己重复的,但是前面有一对 \(4\) ,所以只能到 \(4\) 。

综上:记录一个 \(k\) ,表示 最大长度只能为 \(k+1...i\) ,和每一个数上一次出现的位置。

取最大值更新 \(k\) ,就好啦!

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+9;
int n,m,s[N],tot;
int cnt[N],qian[N];
map<int,int> mp;
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&s[i]);
		if(mp.find(s[i])==mp.end()) mp[s[i]]=++tot,s[i]=tot;
		else s[i]=mp[s[i]];
	}
	int k=0;
	for(int i=1;i<=n;i++)
	{
		k=max(k,cnt[s[i]]); cnt[s[i]]=i; 
		qian[i]=k;
	}
	while(m--)
	{
		int ans=1;
		int x,y;
		scanf("%d%d",&x,&y);
		for(int i=x;i<=y;i++)
		{
			ans=max(ans,i-max(x-1,qian[i]));
		}
		printf("%d\n",ans);
	}
	return 0;
}

标签:Paradox,U423621,询问,样例,NRC,int,区间,Sqen
From: https://www.cnblogs.com/ppllxx-9G/p/18170625

相关文章

  • screenrc配置
    #Setdefaultencodingusingutf8defutf8on##解决中文乱码,这个要按需配置defencodingutf8encodingutf8utf8#兼容shell使得.bashrc.profile/etc/profile等里面的别名等设置生效shell-$SHELL#setthestartupmessagestartup_messageofftermlinux##......
  • P10238 [yLCPC2024] F. PANDORA PARADOXXX
    P10238[yLCPC2024]F.PANDORAPARADOXXX并查集维护连通性+结论+数据结构维护距离题目的操作是删边通常复杂,并且不强制在线,所以离线倒过来加边。题目要求的就是当前所有连通块的直径的最大值,考虑加边后两个连通块合并后直径的变化。有结论:合并后的连通块的直径两端点一定是合......
  • Struts2 s2-062 oglnRCE
    struts2漏洞总结(到19年4月)-提笔冩未來-博客园(cnblogs.com)CVE-2021-31805struts2介绍什么是MVC(Model-View-Controller)?基础|三层架构与MVC模式-知乎(zhihu.com)MVC模式MVC模式是软件工程中常见的一种软件架构模式,该模式把软件系统(项目)分为三个基本部分:模型(Mod......
  • CF639E - Bear and Paradox | 二分答案 思维
    links题目大意自己可以想出来个七七八八,但很多地方没有把细节处理好,思考问题不全面,然后就花了很长时间……显然答案具有单调性,直接二分答案。对于一个二分的答案\(c\),思考如何找到最优的做题顺序,考虑相邻的两道题,把他们的顺序调换,看最终的得分会如何变化。因为把这两道题调......
  • P10238 [yLCPC2024] F. PANDORA PARADOXXX 题解
    分析考虑时光倒流。对于需要合并的两个连通块\(x,y\),其合并之后的最远点对距离一定是合并之前的两组点对中产生的。在合并的时候枚举点对,取距离最大值即可。由于我们是倒着来的,所有连通块的最远点对距离最大值不减,所以能直接在合并之后取最大值。维护连通块用并查集即可。复杂......
  • CodeForces 1936D Bitwise Paradox
    洛谷传送门CF传送门和CF1004FSonyaandBitwiseOR很像。考虑一次询问怎么做。考虑分治,每次只计算左端点在\([l,mid]\),右端点在\([mid+1,r]\)的区间的贡献。对于每个\(i\in[l,mid]\),维护最小的\(j\in[mid+1,r]\)使得\([i,j]\)的或\(\gev\),那么\(\m......
  • ORA-600[kqlnrc_1]
    ORA-600[kqlnrc_1]目录ORA-600[kqlnrc_1]1.现象2.处理1.现象oracle后台日志alert.log,报错Errorsinfile/oracle/diag/rdbms/airxxxx/airxxxx1/trace/airxxxx1_ora_152214.trc(incident=32162):ORA-00600:�ڲ���������,����:[kqlnrc_1],[0x50AA46990],[],[],[],[],[],[],......
  • [Unity] 基于 ParadoxNotion FlowCanvas 插件实现技能
    游戏中的技能总是有各种各样的逻辑比如持续性范围技能,魔兽争霸的暴雪风链式技能,博德之门的闪电链持续技能,博德之门的昼明术等等,这些技能都有各自特殊的逻辑,如何让这些技能有一个通用的配置方法像是RPGBuilder会有一个技能编辑器,里面提供了尽可能多的选择来配置技能编辑器......
  • Oracle-lsnrctl监听进程控制
    LSNRCTL>helpThefollowingoperationsareavailableAnasterisk(*)denotesamodifierorextendedcommand:startstopstatusservicesversionreloadsave_configtracespawnch......
  • oracle startup命令及lsnrctl命令
    启动一个数据库需要三个步骤:1、创建一个Oracle实例(非安装阶段)2、由实例安装数据库(安装阶段)3、打开数据库(打开阶段)在Startup 命令中,可以通过不同的选项来控制数据库的不同启动步骤。  Oracle数据库的完整启动过程分为3个步骤完成的启动实例–>加载数据库–>打开数据库;数......