比赛 NOIP2025模拟赛1 评测结果 AAAAAAAAAA
题目名称 接竹竿 最终得分 100
用户昵称 郑霁桓 运行时间 1.349 s
代码语言 C++ 内存使用 4.99 MiB
提交时间 2025-11-24 09:17:27
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long T,n,q,l,r,a[15005],t[15];
long long nt[15][15005],p,pp,as;
int main(){
	freopen("bamboo.in","r",stdin);
	freopen("bamboo.out","w",stdout);
	ios::sync_with_stdio(false);
	cin>>T;
	while(T--){
		cin>>n;
		as=0;
		for(int i=1;i<=13;i++) t[i]=0;
		for(int j=0;j<=14;j++)
		for(int i=1;i<=n;i++) nt[j][i]=0;
		for(int i=1;i<=n;i++){
			cin>>a[i];
			nt[0][t[a[i]]]=i;
			t[a[i]]=i;
		}
		for(int i=1;i<=14;i++){
			for(int j=1;j<=n;j++){
				if(nt[i-1][j]) nt[i][j]=nt[i-1][nt[i-1][j]+1];
			}
		}
		cin>>q;
		while(q--){
			cin>>l>>r;
			p=l;
			as=0;
			while(p<=r){
				pp=p;
				for(int i=14;i>=0;i--){
					if(nt[i][p]&&nt[i][p]<=r) p=nt[i][p]+1;
				}
				if(p<=r) as++;
				p++;
			}
			cout<<as<<"\n";
		}
	}
	return 0;
}