博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
luogu P3901 数列找不同
阅读量:6803 次
发布时间:2019-06-26

本文共 952 字,大约阅读时间需要 3 分钟。

题目描述

现有数列A1,A2,⋯,A N,Q 个询问(L i,R i),ALi,ALi+1,⋯,ARi 是否互不相同

输入格式

第1 行,2 个整数N,Q

第2 行,N 个整数ALi,ALi+1,⋯,A R i

Q 行,每行2 个整数L i,R i

输出格式

对每个询问输出一行,“Yes” 或者“No”


怎么判区间内的数是否互不相同呢?

设区间长度为len,互不相同可以看成是区间内有len个不同的数。那么我们统计就好了。

暴力一点,统计用莫队

时间复杂度为O(N√N)

#include
#include
#include
#include
#include
#define maxn 100001using namespace std;int n,m,val[maxn];bool ans[maxn];inline int read(){ register int x(0),f(1); register char c(getchar()); while(c<'0'||'9'
q[i].l) add(--l); while(r
q[i].r) del(r--); ans[q[i].id]=(tot==q[i].r-q[i].l+1); }}int main(){ n=read(),m=read(),unit=sqrt(n); for(register int i=1;i<=n;i++) val[i]=read(); for(register int i=1;i<=m;i++) q[i].l=read(),q[i].r=read(),q[i].id=i,q[i].col=q[i].l/unit+1; solve(); for(register int i=1;i<=m;i++) printf("%s\n",ans[i]?"Yes":"No"); return 0;}

转载于:https://www.cnblogs.com/akura/p/11066586.html

你可能感兴趣的文章
ConcurrentHashMap原理分析
查看>>
phpstorm config include paths for swoole
查看>>
ruby的基础语法
查看>>
代码触发clistctrl控件的NM_CLICK事件
查看>>
我的友情链接
查看>>
win7安装***失败,出现错误771
查看>>
搭建python本地源
查看>>
【转】WaitN 自动化测试 入门
查看>>
浅谈NAT的原理、缺陷及其解决之道
查看>>
【linux基础】22、iptables基础
查看>>
华为 ACL 问题
查看>>
RHEL设置主机名
查看>>
Java原始的压缩和解压
查看>>
ORACLE系统表和视图说明
查看>>
你在为谁工作
查看>>
5、MySQL多表查询
查看>>
GZIPInputstream解决乱码问题
查看>>
阿里云不能启动docker
查看>>
lguest 源码分析之guest os启动的过程
查看>>
安装LVS
查看>>