萌新初学莫队全RE求助!
查看原帖
萌新初学莫队全RE求助!
494192
ChickenDrinkingMilk楼主2023/3/23 21:36
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int N=1000000;
int n,Q,ans,a[N+5],bl,f[N+5],qans[N+5];
struct node{
	int l,r,id;
}q[N+5]; 
bool operator <(const node &a,const node &b){
	return a.l/bl^b.l/bl?a.l<b.l:a.r<b.r;
}
void add(int pos){
	ans+=(++f[a[pos]]==2);
}
void del(int pos){
	ans-=(--f[a[pos]]==1);
}
int main(){
	ios::sync_with_stdio(0);
	cin>>n>>Q;
	bl=sqrt(n);
	for (int i=1;i<=n;i++) cin>>a[i];
	for (int i=1;i<=Q;i++){
		cin>>q[i].l>>q[i].r;
		q[i].id=i;
	}
	sort(q+1,q+Q+1);
	int L=1,R=0;
	for (int i=1;i<=Q;i++){
		while (R<q[i].r) add(++R);
		while (L>q[i].l) add(++L);
		while (R>q[i].r) del(R--);
		while (L<q[i].l) del(L++);
		qans[q[i].id]=ans;
//		cout<<q[i].id<<' '<<ans<<'\n';
	}
	for (int i=1;i<=Q;i++){
		if (qans[i]==0) cout<<"Yes\n";
		else cout<<"No\n";
	}
}

2023/3/23 21:36
加载中...