比赛 NOIP2025模拟赛1 评测结果 AAATTTAAAA
题目名称 接竹竿 最终得分 70
用户昵称 我常常追忆未来 运行时间 7.063 s
代码语言 C++ 内存使用 4.04 MiB
提交时间 2025-11-24 09:27:31
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+7;
int a[N],n,m,t;
int main(){
	freopen("bamboo.in","r",stdin);
	freopen("bamboo.out","w",stdout);
    cin.tie(0);
    ios::sync_with_stdio(0);
    cin>>t;
    while(t--){
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }    
		unordered_map<int,int>nxt;        
        unordered_map<int,int>last;
        for(int i=n;i>=1;i--){
            if(last.find(a[i])!=last.end()){
                nxt[i]=last[a[i]];
            }
            else{
                nxt[i]=n+1;
            }
            last[a[i]]=i;
        }
        cin>>m;
        while(m--){
            int l,r;
            cin>>l>>r;
            int cnt=0;
            int i=l;
            while(i<=r){
                if(nxt[i]<=r){
                    i=nxt[i]+1;
                }
                else{
                	cnt++;
                	i++;              	
                }
            }
            cout<<cnt<<"\n";
        }
    }
    return 0;
}