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