莫队全WA
查看原帖
莫队全WA
905071
wbs123456楼主2024/7/9 11:35
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN=5e4+5,MAXM=1e6+5;
int n,q,q1,q2,a[MAXM],cnt[MAXM],ans=0,ans_a[MAXM],sqr,k;
unordered_map<int,int> st;
struct P{
	int l,r,id;
};
bool cmp(P x,P y){
	if(x.l/sqr==y.l/sqr)
		return x.r<y.r;
	else return x.l<y.l; 
}
void add(int i){
	st[i]++;
	if(st[a[i]]==1) ans++;
	//kcout<<i<<": "<<cnt[i]<<" "<<ans<<endl; 
}
void del(int i){
	st[i]--;
	if(st[a[i]]==0) ans--;
	//cout<<ans<<" "; 
}
P c[MAXM];
signed main(){
	cin>>n>>q;
	sqr=sqrt(n);
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=q;i++){
		cin>>c[i].l>>c[i].r;
		c[i].id=i;
	} 
	sort(c+1,c+q+1,cmp);
	int L=1,R=0;
	for(int i=1;i<=q;i++){
		while(L>c[i].l) add(a[--L]);
		while(R<c[i].r) add(a[++R]);
		while(L<c[i].l) del(a[L++]);
		while(R>c[i].r) del(a[R--]);
		if(ans==c[i].r-c[i].l+1) ans_a[c[i].id]=1;	
		else ans_a[c[i].id]=0;
	}
	for(int i=1;i<=q;i++){
		cout<<((ans_a[i])?"Yes\n":"No\n");
	}
	return 0;
}

样例已过

2024/7/9 11:35
加载中...