比赛 NOIP2025模拟赛1 评测结果 WWWWWWWWWW
题目名称 接竹竿 最终得分 0
用户昵称 徐诗畅 运行时间 1.629 s
代码语言 C++ 内存使用 6.02 MiB
提交时间 2025-11-24 10:16:25
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=15005;
int n,q,a[N],suf[N],vis[15];
map<pair<int,int>,int>mp; 
void solve(){
	scanf("%d",&n);
	memset(vis,0,sizeof(vis));
	for(int i = 1;i<=n;i++) suf[i]=0;
	for(int i = 1;i<=n;i++) scanf("%d",&a[i]);
	for(int i = n;i>=1;i--){
		suf[i]=vis[a[i]];
		vis[a[i]]=i;
	}
	scanf("%d",&q);
	while(q--){
		int l,r,ans=0; scanf("%d%d",&l,&r);
		if(mp.count({l,r})) printf("%d\n",mp[{l,r}]);
		for(int i = l;i<=r;i++){
			if(suf[i]!=0&&suf[i]<=r) i=suf[i];
			else ans++;
		}
		mp[{l,r}]=ans; 
		printf("%d\n",ans);
	}
}
int main(){
	freopen("bamboo.in","r",stdin);
	freopen("bamboo.out","w",stdout);
	int _; cin>>_;
	while(_--) solve();
	return 0;
}