O(n2log2n) dp求优化
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define F(i,k,n) for (ll i=k;i<=n;i++)
const int N=2e5+10;
int a[N],dp[N];
int n;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n;
F(i,1,n) cin>>a[i];
if (n>2000) cout<<n;
else{
dp[1]=1;
F(i,2,n){
dp[i]=i;
set <int> s;
s.insert(a[i]);
for (int j=i-1;j>=0;j--){
dp[i]=min(dp[i],int(s.size()*s.size()+dp[j]));
s.insert(a[j]);
}
}
cout<<dp[n];
}
return 0;
}