RE求条
查看原帖
RE求条
1285683
lz_fruit楼主2025/2/7 17:18

用的就是莫队,后5个点RE,求条.

#include <bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int a[N],cnt[100005],as[N];
struct query{
	int l,r,p,ans;
} Q[N];

bool cmp(query a, query b)
{
    return (a.l/b.l)==(b.l/b.l)?a.r<b.r:a.l<b.l;
}

int main()
{
	int n,q;
	cin>>n>>q;
	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].p=i;
	}
	sort(Q+1,Q+q+1,cmp);
	int culL=1,culR=1;
	cnt[a[1]]++;
	for(int i=1;i<=q;i++)
	{
		while(culL<Q[i].l)
		culL++,cnt[a[culL-1]]--;
		while(culR<Q[i].r)
		culR++,cnt[a[culR]]++;
		while(culL>Q[i].l)
		culL--,cnt[a[culL]]++;
		while(culR>Q[i].r)
		culR--,cnt[a[culR+1]]--;
		bool flag=1;
		for(int i=1;i<=N;i++)
		{
			if(cnt[i]>1)
			{
				flag=0;
				break;
			}
		}
		Q[i].ans=flag;
	}
	for(int i=1;i<=q;i++)
	{
		as[Q[i].p]=Q[i].ans;
	}
	for(int i=1;i<=q;i++)
	{
		if(as[i]==1) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
}
2025/2/7 17:18
加载中...