比赛 NOIP2025模拟赛1 评测结果 AAAAAAAAAA
题目名称 接竹竿 最终得分 100
用户昵称 会挽弯弓满月 运行时间 1.248 s
代码语言 C++ 内存使用 3.91 MiB
提交时间 2025-11-24 09:14:14
显示代码纯文本
#include <bits/stdc++.h> 
using namespace std;
const int N=15010;
int read(){
	int x=0,f=1;
	char c=getchar();
	while(c<48||c>57){
		if(c==45) f=-1;
		c=getchar();
	}
	while(c>=48&&c<=57){
		x=(x<<1)+(x<<3)+c-48;
		c=getchar();
	}
	return f*x;
}
int _,Q;
int n;
int a[N],nxt[N];
int ans;
void init(){
	int lst[N]={0};
	for(int i=1;i<=n;i++) nxt[i]=n+1;
	for(int i=1;i<=n;i++){
		if(lst[a[i]]) nxt[lst[a[i]]]=i;
		lst[a[i]]=i;
	}
}
void solve(int l,int r){
	int i=l,ans=0;
	while(i<=r){
		if(nxt[i]>r){
			ans++;
			i++;
		}
		else i=nxt[i]+1;
	}
	printf("%d\n",ans);
}
int main(){
	freopen("bamboo.in","r",stdin);
	freopen("bamboo.out","w",stdout);
	_=read();
	int l,r;
	while(_--){
		n=read();
		for(int i=1;i<=n;i++) a[i]=read();
		init();
		Q=read();
		while(Q--){
			l=read();r=read();
			solve(l,r);
		}
	}
	return 0;
}