1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int N=15005; int n,m,k,s,t,now[15],a[N],nxt[N]; int f[N][21]; int main() { // freopen("in.txt","r",stdin); int T;cin>>T; while (T--){ cin>>n; for (int i=1;i<=n;++i) cin>>a[i]; memset(now,0,sizeof(now)); nxt[n+1]=n+1; for (int i=n;i>=1;--i) { if (now[a[i]]==0) nxt[i]=i; else nxt[i]=now[a[i]]+1; now[a[i]]=i; } for (int i=1;i<=n+1;++i) f[i][0]=nxt[i]; for (int j=1;j<=20;++j) for (int i=1;i<=n+1;++i) f[i][j]=f[f[i][j-1]][j-1]; cin>>m;int l,r; for (int i=1;i<=m;++i){ cin>>l>>r; int ans=0; while (l<=r){ for (int j=20;j>=0;--j) if (f[l][j]<=r) l=f[l][j]; if (f[l][0]==r+1) break; else ans++,l++; } cout<<ans<<"\n"; } } }
- 1
信息
- ID
- 782
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者