8 You Are So Beautiful
如果要是子数组唯一,没有子序列与之相同,那么就要找同一个字母的第一个出现的位置和最后一个出现的位置
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int a[N];
void solve(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
map<int,int>mp,st,ed;
for(int i=1;i<=n;i++){
if(mp[a[i]]==0){
mp[a[i]]++;
st[a[i]]=i;
}
ed[a[i]]=i;
}
int ans=0;
int cnt=0;
for(int i=1;i<=n;i++){
if(st[a[i]]==i)cnt++;
if(ed[a[i]]==i)ans+=cnt;
}
cout<<ans<<"\n";
}
signed main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int t=1;
cin>>t;
for(int i=1;i<=t;i++)solve();
return 0;
}