比赛 NOIP2025模拟赛1 评测结果 AAAAAAAAAA
题目名称 接竹竿 最终得分 100
用户昵称 李奇文 运行时间 1.236 s
代码语言 C++ 内存使用 4.33 MiB
提交时间 2025-11-24 09:19:51
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=15005;
int t,l,r,ans;
int n,m,a[N],f[N],d[14];
void solve(){
	cin>>n;
	for(int i(1);i<=n;++i) cin>>a[i];
	for(int i(1);i<=13;++i) d[i]=0;
	for(int i(n);i>=1;--i) f[i]=d[a[i]],d[a[i]]=i;
	cin>>m;
	map<pair<int,int>,int>g;
	for(int i(1);i<=m;++i){
		ans=0;cin>>l>>r;
		if(g.count({l,r})){ cout<<g[{l,r}]<<"\n";continue;}
		for(int j=l;j<=r;++j) (l<=f[j]&&f[j]<=r)?j=f[j]:++ans;
		g[{l,r}]=ans;
		cout<<ans<<"\n";
	}
	return;
}
int main(){
	freopen("bamboo.in","r",stdin);
	freopen("bamboo.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>t;
	while(t--){
		solve();
	}
	return 0;
}