| 比赛 |
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;
}