洛谷P3901 数列找不同 [莫队]
题目描述
现有数列 A_1,A_2,\cdots,A_NA1,A2,⋯,AN ,Q 个询问 (L_i,R_i)(Li,Ri) , A_{Li} ,A_{Li+1},\cdots,A_{Ri}ALi,ALi+1,⋯,ARi 是否互不相同
输入输出格式
输入格式:
第1 行,2 个整数 N,QN,Q
第2 行,N 个整数 A_{Li} ,A_{Li+1},\cdots,A_{Ri}ALi,ALi+1,⋯,ARi
Q 行,每行2 个整数 L_i,R_iLi,Ri
输出格式:
对每个询问输出一行,“Yes” 或者“No”
输入输出样例
说明
• 对于50% 的数据, N,Q \le 10^3N,Q≤103
• 对于100% 的数据, 1 \le N,Q \le 10^5, 1 \le A_i \le N, 1 \le L_i \le R_i \le N1≤N,Q≤105,1≤Ai≤N,1≤Li≤Ri≤N
分析:很明显的莫队模板,轻松A。不过过程中被卡了读优。。。有点尴尬。。。
Code:
#include<bits/stdc++.h>
#define Fi(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int N=1e5+;
int n,m,s,num=,d[N],pos[N],sum[N];bool ans[N];
struct Node{int l,r,id;}a[N];
inline bool cmp(Node x,Node y)
{return pos[x.l]==pos[y.l]?x.r<y.r:x.l<y.l;}
inline void change(int i,bool f)
{
if(f){sum[d[i]]++;if(sum[d[i]]==)num++;}
else {sum[d[i]]--;if(sum[d[i]]==)num--;}
}
int main()
{
ios::sync_with_stdio(false);
cin>>n>>m;s=int(sqrt(n));
memset(ans,false,sizeof(ans));
Fi(i,,n){cin>>d[i];pos[i]=(i-)/s+;}
Fi(i,,m){cin>>a[i].l>>a[i].r;a[i].id=i;}
sort(a+,a++m,cmp);int l=,r=;
Fi(i,,m){
while(l<a[i].l)change(l++,);
while(l>a[i].l)change(--l,);
while(r<a[i].r)change(++r,);
while(r>a[i].r)change(r--,);
if(num==a[i].r-a[i].l+)ans[a[i].id]=true;}
Fi(i,,m)if(ans[i])printf("Yes\n");else printf("No\n");
return ;
}
洛谷P3901 数列找不同 [莫队]的更多相关文章
- 洛谷P3901 数列找不同(莫队水题)
重温下手感,判断区间是否全是不同的数字有两种做法,一个长度为len的区间不同的数字,参见HH的项链,一种是区间众数,参见蒲公英,是水题没错了.明天搞数据库,然后继续自己的gre和训练计划 #inclu ...
- 洛谷 P3901 数列找不同(莫队)
题目链接:https://www.luogu.com.cn/problem/P3901 这道题简单莫队模板题,然后$add$和$del$分别处理$vis[]$从$0-->1$和从$1--> ...
- 洛谷P3901 数列找不同(莫队)
传送门 我不管我不管我就是要用莫队 直接用莫队裸上 //minamoto #include<iostream> #include<cstdio> #include<alg ...
- 【刷题】洛谷 P3901 数列找不同
题目描述 现有数列 \(A_1,A_2,\cdots,A_N\) ,Q 个询问 \((L_i,R_i)\) , \(A_{Li} ,A_{Li+1},\cdots,A_{Ri}\) 是否互不相同 输入 ...
- Bzoj2120/洛谷P1903 数颜色(莫队)
题面 Bzoj 洛谷 题解 考虑对操作离线后分块处理询问操作(莫队算法),将询问操作按照编号分块后左端点第一关键字,右端点第二关键字排序(分块大小为\(n^{\frac 23}\)),对于每一个询问操 ...
- luogu 数列找不同-莫队
https://www.luogu.org/problemnew/show/P3901 了解过莫队的人应该都清楚,莫队是一个优化的暴力,可以在相对暴力比较优的时间中,求出一段序列内的某些性质(例:数字 ...
- 洛谷P3245 [HNOI2016]大数 【莫队】
题目 题解 除了\(5\)和\(2\) 后缀数字对\(P\)取模意义下,两个位置相减如果为\(0\),那么对应子串即为\(P\)的倍数 只用对区间种相同数个数\(x\)贡献\({x \choose 2 ...
- 洛谷 P4887 -【模板】莫队二次离线(第十四分块(前体))(莫队二次离线)
题面传送门 莫队二次离线 mol ban tea,大概是这道题让我第一次听说有这东西? 首先看到这类数数对的问题可以考虑莫队,记 \(S\) 为二进制下有 \(k\) 个 \(1\) 的数集,我们实时 ...
- P3901 数列找不同
P3901 数列找不同 题目描述 现有数列 \(A_1,A_2,\cdots,A_N\) ,Q 个询问 \((L_i,R_i)\) , \(A_{Li} ,A_{Li+1},\cdots,A_{Ri} ...
随机推荐
- vs 统计有效代码行数
1.Visual Studio中,crtl+Shift+F,输入b*[^:b#/]+.*$ ,查找范围:选择整个解决方案,查找选项:使用正则表达式,文件类型:*.cs;*.cshtml 选择查找全部
- netcore 使用log4net
1.Install Install-Package log4net 2. conifg 創建文件:log4net.config <?xml version="1.0" enc ...
- 【BZOJ1085】【SCOI2005】骑士精神 [A*搜索]
骑士精神 Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description 在一个5×5的棋盘上有12个白色的 ...
- 所有和Java中代理有关的知识点都在这了。
对于每一个Java开发来说,代理这个词或多或少都会听说过.你可能听到过的有代理模式.动态代理.反向代理等.那么,到底什么是代理,这么多代理又有什么区别呢.本文就来简要分析一下. 代理技术,其实不只是J ...
- python模块subprocess学习
当我们想要调用系统命令,可以使用os,commands还有subprocess模块整理如下: os模块: 1. os.system 输出命令结果到屏幕.返回命令执行状态. >>> o ...
- Fiddler-- 安装HTTPs证书
1. 现在很多带有比较重要信息的接口都使用了安全性更高的HTTPS,而Fiddler默认是抓取HTTP类型的接口,要想查看HTTPS类型接口就需要安装fiddler证书. 2.打开Fiddler, ...
- hydra 密码破解工具详解
一.简介 hydra是著名黑客组织thc的一款开源的暴力密码破解工具,可以在线破解多种密码.官 网:http://www.thc.org/thc-hydra,可支持AFP, Cisco AAA, Ci ...
- 查看服务器是否被DDOS攻击的方法
伴随着现代互联网络快速发展,更加容易出现被攻击.尤其是ddos攻击已经不在是大网站需要关心的事情了.不少中小型企业,也在遭受ddos攻击.站长对ddos攻击不了解,所以网站被ddos攻击的时候,都不会 ...
- Optimizing TLB entries for mixed page size storage in contiguous memory
A system and method for accessing memory are provided. The system comprises a lookup buffer for stor ...
- 25个Linux相关的网站【转】
转自:http://www.cnblogs.com/Lindaman/p/4552805.html 下面是25个最具有影响力,也是最重要的Linux网站,这些网站提供了Linux的分发包,软件,文件, ...