莫队全WA求调
查看原帖
莫队全WA求调
658762
sxq9楼主2024/7/11 10:59

rt,

#include<bits/stdc++.h>
using namespace std;
struct ask{
	int x,y;
}b[100010];
int a[100010],kuai[100010],you[100010],ans;
bool cmp(ask aa,ask bb){
	if(kuai[aa.x]==kuai[bb.x])return aa.y<bb.y;
	return kuai[aa.x]<kuai[bb.x];
}
void jian(int point){
	if(--you[a[point]]==0)ans--;
}
void jia(int point){
	if(++you[a[point]]==1)ans++;
}
int main(){
	int n,q;
	cin>>n>>q;
	int sq=sqrt(n);
	for(int i=1;i<=n;i++){
		cin>>a[i];
		you[a[i]]++;
		if(you[a[i]]==1)ans++;
		kuai[i]=(i-1)/sq+1;
	}
	for(int i=1;i<=q;i++){
		cin>>b[i].x>>b[i].y;
	}
	sort(b+1,b+q+1,cmp);
	int yuanx=1,yuany=n;
	for(int i=1;i<=q;i++){
		int x=b[i].x,y=b[i].y;
		while(yuanx<x)jian(yuanx++);
		while(yuanx>x)jia(--yuanx);
		while(yuany<y)jia(++yuany);
		while(yuany>y)jian(yuany--);
		if(ans==y-x+1)cout<<"Yes\n";
		else cout<<"No\n";
	}
	return 0;
}
2024/7/11 10:59
加载中...