区间检测(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)的更多相关文章

  1. [Swift]LeetCode632. 最小区间 | Smallest Range

    You have k lists of sorted integers in ascending order. Find the smallest range that includes at lea ...

  2. Python - 详解 range()

    介绍 range 是一个类,不是函数 表示不可变的数字序列,通常用于在 for 循环中循环指定的次数 两种语法格式 range(stop) 表示区间 [0, stop) 内的整数序列 该区间从 0 开 ...

  3. Swift 中范围和区间如何使用?

    虽然现在swift语言已经发展到了2.0版了,但是相信很多学习iOS开发的童鞋仍对swift语言存在各种各样的疑问,今天小编将为大家详细介绍swift中的范围和区间,下面我们一起来看看吧. Range ...

  4. 《Genesis-3D开源游戏引擎--横版格斗游戏制作教程04:技能的输入与检测》

    4.技能的输入与检测 概述: 技能系统的用户体验,制约着玩家对整个游戏的体验.游戏角色的技能华丽度,连招的顺利过渡,以及逼真的打击感,都作为一款游戏的卖点吸引着玩家的注意.开发者在开发游戏初期,会根据 ...

  5. 指定Gpu range系列函数

    tensorflow指定GPU训练 import os os.environ[CUDA_VISIABLE_DEVICES] = '0,1'记住DEVICES是复数 range()返回的是range o ...

  6. [Swift实际操作]七、常见概念-(1).范围Range、ClosedRange和NSRange的使用实际操作

    本文将为你解析区间的概念.在对字符串进行处理时,经常会使用到区间.例如获得字符串中从某个位置开始到另一个位置之间的内容. 首先导入需要使用到的框架 import Foundation 区间分为闭区间和 ...

  7. python学习之:序列类型 之列表,元组,range

    列表 列表是可变序列,通常用于存放同类项目的集合(其中精确的相似程度将根据应用而变化). class list([iterable]) 可以用多种方式构建列表: 使用一对方括号来表示空列表: [ ] ...

  8. 全面剖析Redis Cluster原理和应用 (转)

    1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生 ...

  9. Swift LeetCode 目录 | Catalog

    请点击页面左上角 -> Fork me on Github 或直接访问本项目Github地址:LeetCode Solution by Swift    说明:题目中含有$符号则为付费题目. 如 ...

  10. 实战ELK(9) Elasticsearch地理位置

    地理坐标点(geo-point) 是指地球表面可以用经纬度描述的一个点.地理坐标点可以用来计算两个坐标位置间的距离,或者判断一个点是否在一个区域中.地理坐标点不能被动态映射(dynamic mappi ...

随机推荐

  1. JavaCV人脸识别三部曲之一:视频中的人脸保存为图片

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于人脸识别 本文是<JavaCV人脸识别三部曲 ...

  2. 快上车,搭乘HUAWEI HiCar驶向未来

    HUAWEI HiCar(以下简称HiCar)是华为提供的人-车-家全场景智慧互联解决方案,连接手机与车辆,充分发挥各自的优势属性,将手机的应用/服务生态延伸进车辆,实现以手机为核心的全场景体验.消费 ...

  3. Tomcat启动时出现乱码的解决方式

    在网上下载了一个版本号为apache-tomcat-8.5.38的Tomcat,因为这个Tomcat一直没有用过,所以今天启动时出现了如下乱码: 解决方案: 找到Tomcat目录下conf文件夹中的l ...

  4. .Net FrameWork下面如何生成AOT呢?

    前言 其实AOT预编译,在.Net FrameWorker1.0里面就有了.它叫做Ngen,只不过当时叫做生成本机映像,实际上还是一个东西,也就是预编译.本篇来看下. 概括 1.介绍 现在的现代化的. ...

  5. Java 中怎样将 bytes 转换为 long 类型?

    将bytes 转换为long类型: 第一种方式: String 接收 bytes 的构造器转成 String,再 Long.parseLong: 但此种情况需要注意:字节数组中的每个字节都必须是有效的 ...

  6. 我真的想知道,AI编译器中的IR是什么?

    随着深度学习的不断发展,AI 模型结构在快速演化,底层计算硬件技术更是层出不穷,对于广大开发者来说不仅要考虑如何在复杂多变的场景下有效的将算力发挥出来,还要应对 AI 框架的持续迭代. AI 编译器就 ...

  7. Centos7制作本地yum仓库,共享给局域网其他设备

    环境准备: 准备好安装好Centos7的虚机A(服务端)和虚机B(客户端) 配置两台虚机网络使其互通,关闭selinux和firewalld等限制 下载完整的ISO镜像(CentOS-7-x86_64 ...

  8. 连续下雨天,.net开发者如何预防流感

    最近连续下了3天雨,天气变化大,很容易引发感冒咳嗽等疾病.对于.NET技术开发人员来说,如何保持身体健康,保证工作效率是一个很重要的问题. 首先,我们需要注意保持室内空气流通,避免长时间处于封闭的空间 ...

  9. Android Studio Giraffe安装与gradle配置

    本机环境:win10专业版,64位,16G内存. 原先用的AS2.2,是很早之前在看<第一行代码Android(第2版)>的时候,按书里的链接下载安装的,也不用怎么配置.(PS:第一行代码 ...

  10. 当小白遇到FullGC

    起初没有人在意这场GC,直到它影响到了每一天! 前言 本文记录了一次排查FullGC导致的TP99过高过程,介绍了一些排查时思路,线索以及工具的使用,希望能够帮助一些新手在排查问题没有很好的思路时,提 ...