区间检测(range)
区间检测(range)
时间限制: 1 Sec 内存限制: 128 MB
题目描述
给定一个长度为n的序列,进行m次检测,每次检测某个区间中,是否有重复的数。
输入
第一行,两个整数n和m,表示序列中元素的个数以及需要检测的次数。
第二行n个元素,表示序列中的元素。
接下来m行,每行两个整数L和R(L≤R),表示需要检测的区间。
输出
对于每个询问,如果这个区间没有重复的数字,输出1,否则输0。
样例
|
5 2 1 2 3 4 1 1 4 1 5 |
1 0 |
提示
对于30%的数据,n和m的范围[1,500];
对于50%的数据,n和m的范围[1,5000];
对于80%的数据,n和m的范围[1,50000],序列中的元素范围[0,105];
对于100%的数据,n和m的范围[1,500000],序列中的元素范围[0,109]
这就是题目了
这个我爆蛋了。。。
艹
其实不难,但是我还是写的题目少了
这个题面非常的清晰,就不用再解释了
判断一个区间中有没有相同的数,把他给分割成为子问题,就是判断每一个数在这个区间内有没有相同的数
那么就很自然的想到维护每一个数前面和后面相同的数在什么位置就好了qwq
可是有必要吗awa
只用维护前面的就好了qwq
仔细想想就好了awa
如果这个区间里面有一个数重复了,那么肯定会有一个数前面一个和他相同的数在这个区间中awa
所以就方便多了qwq
pre[i]表示上一个值为A[i]的数出现的位置
题目等价于判断min(pre[L...R])是否小于L
因为pre[1...L-1]显然是小于L的,所有可以直接判断min(pre[1...R])是否小于L
快乐
code
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,a[5000001],Max[500001][30];
map<int,int>pre;
inline ll read()
{
char c=getchar();ll a=0,b=1;
for(;c<'0'||c>'9';c=getchar())if(c=='-')b=-1;
for(;c>='0'&&c<='9';c=getchar())a=a*10+c-48;
return a*b;
}
ll ask(ll l,ll r)
{
ll k=log2(r-l+1);
return max(Max[l][k],Max[r-(1<<k)+1][k]);
}
void work()
{
int t=log2(n);
for(ll j=1;j<=t;j++)
{
for(ll i=1;i<=n-(1<<j)+1;i++)
{
Max[i][j]=max(Max[i][j-1],Max[i+(1<<(j-1))][j-1]);
}
}
}
int main()
{
n=read(),m=read();
for(int i=1;i<=n;i++)
{
int val=read();
Max[i][0]=pre[val];
pre[val]=i;
}
work();
while(m--)
{
int l=read(),r=read();
if(ask(l,r)<l) puts("1");
else puts("0");
}
return 0;
}
区间检测(range)的更多相关文章
- [Swift]LeetCode632. 最小区间 | Smallest Range
You have k lists of sorted integers in ascending order. Find the smallest range that includes at lea ...
- Python - 详解 range()
介绍 range 是一个类,不是函数 表示不可变的数字序列,通常用于在 for 循环中循环指定的次数 两种语法格式 range(stop) 表示区间 [0, stop) 内的整数序列 该区间从 0 开 ...
- Swift 中范围和区间如何使用?
虽然现在swift语言已经发展到了2.0版了,但是相信很多学习iOS开发的童鞋仍对swift语言存在各种各样的疑问,今天小编将为大家详细介绍swift中的范围和区间,下面我们一起来看看吧. Range ...
- 《Genesis-3D开源游戏引擎--横版格斗游戏制作教程04:技能的输入与检测》
4.技能的输入与检测 概述: 技能系统的用户体验,制约着玩家对整个游戏的体验.游戏角色的技能华丽度,连招的顺利过渡,以及逼真的打击感,都作为一款游戏的卖点吸引着玩家的注意.开发者在开发游戏初期,会根据 ...
- 指定Gpu range系列函数
tensorflow指定GPU训练 import os os.environ[CUDA_VISIABLE_DEVICES] = '0,1'记住DEVICES是复数 range()返回的是range o ...
- [Swift实际操作]七、常见概念-(1).范围Range、ClosedRange和NSRange的使用实际操作
本文将为你解析区间的概念.在对字符串进行处理时,经常会使用到区间.例如获得字符串中从某个位置开始到另一个位置之间的内容. 首先导入需要使用到的框架 import Foundation 区间分为闭区间和 ...
- python学习之:序列类型 之列表,元组,range
列表 列表是可变序列,通常用于存放同类项目的集合(其中精确的相似程度将根据应用而变化). class list([iterable]) 可以用多种方式构建列表: 使用一对方括号来表示空列表: [ ] ...
- 全面剖析Redis Cluster原理和应用 (转)
1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生 ...
- Swift LeetCode 目录 | Catalog
请点击页面左上角 -> Fork me on Github 或直接访问本项目Github地址:LeetCode Solution by Swift 说明:题目中含有$符号则为付费题目. 如 ...
- 实战ELK(9) Elasticsearch地理位置
地理坐标点(geo-point) 是指地球表面可以用经纬度描述的一个点.地理坐标点可以用来计算两个坐标位置间的距离,或者判断一个点是否在一个区域中.地理坐标点不能被动态映射(dynamic mappi ...
随机推荐
- 如何从AWS中学习如何使用AmazonSimpleStorageService(S3)进行数据存储
目录 文章标题:32. <如何从 AWS 中学习如何使用 Amazon Simple Storage Service (S3) 进行数据存储> 背景介绍: 随着数据量的不断增加,数据存储的 ...
- 多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning
代码:https://github.com/haotian-liu/LLaVA 总览 在这篇论文中,作者首次尝试使用纯语言 GPT-4 生成多模态语言图像指令遵循数据(insruction-follo ...
- React ISR 如何实现 - 最后的 Demo
之前写了两个 demo 讲解了如何实现 SSR 和 SSG,今天再写个 demo 说在 ISR 如何实现. 什么是 ISR ISR 即 Incremental Static Regeneration ...
- 一文读懂什么是AIGC?
目录 AIGC概念 AIGC发展历史 在早期萌芽阶段(1950s~1990s) 在沉淀累积阶段(1990s~2010s) 在快速发展阶段(2010s~至今) ChatGPT AIGC能做什么? 电子商 ...
- List 接口及其常用方法
List 接口基本介绍 List接口是Collection接口的子接口,其主要特点如下: List中元素有序,是按照元素的插入顺序进行排序的.每个元素都有一个与之关联的整数型索引(索引从 0 开始), ...
- 1.3 Metasploit 生成SSL加密载荷
在本节中,我们将介绍如何通过使用Metasploit生成加密载荷,以隐藏网络特征.前一章节我们已经通过Metasploit生成了一段明文的ShellCode,但明文的网络传输存在安全隐患,因此本节将介 ...
- Blazor资源大全,很棒的Blazor
Blazor资源大全 一个收集了很棒的Blazor资源的集合. Blazor是一个使用C#/Razor和HTML在浏览器中运行的.NET Web框架. 欢迎贡献!请先查看贡献指南.感谢所有的贡献者,你 ...
- Cilium系列-1-Cilium特色 功能及适用场景
系列文章 Cilium 系列文章 Cilium 简介 Cilium 是一个开源的云原生解决方案,用于提供.保护(安全功能)和观察(监控功能)工作负载之间的网络连接,由革命性的内核技术 eBPF 提供动 ...
- 【MAUI Blazor踩坑日记】1.关于图标的处理
前言 本系列文章,默认你已经踏上了MAUI Blazor的贼船,并且对MAUI Blazor有了一些了解,知道MAUI是什么,知道Blazor是什么. 不会教你怎么写MAUI Blazor的项目,只是 ...
- Cilium系列-6-从地址伪装从IPtables切换为eBPF
系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, ...