题解
2023-08-25 15:06:16
发布于:广东
2阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int n,a[200010],v[200010];
long long f[20000100],ans;
void put(int x,int y)
{
for (;x<=n;x+=x & (-x))
f[x]+=y;
}
long long ask(int x)
{
long long sum=0;
for (;x;x-=x & (-x))
sum+=f[x];
return sum;
}
int main()
{
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>a[i];
if (!v[a[i]])
{
put(i,1);
ans+=ask(i-1);
}
else {
ans+=ask(i-1)-ask(v[a[i]]);
put(v[a[i]],-1);
put(i,1);
}
v[a[i]]=i;
}
cout<<ans;
return 0;
}
内存击败花神
这里空空如也
有帮助,赞一个