题目:
题解:
线性dp
#include <bits/stdc++.h>
using namespace std;
long long a[100005],f[100005],con[100005];
long long mod=1e9+7;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
f[0]=1;
for(int i=1;i<=n;i++)
{
f[i]=f[i-1]*2%mod;
if(con[a[i]])
{
f[i]=(f[i]-f[con[a[i]]-1]+mod)%mod;
}
con[a[i]]=i;
}
cout<<f[n]-1<<endl;
return 0;
}