就A了这个
#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;
int main(int argc, const char * argv[]) {
// insert code here...
int n,tmp;
cin>>n;
vector<int> buf(n);
vector<int> dis(n,0x3f3f3f3f);
unordered_map<int,vector<int>> x;
for (int i=0; i<n; i++) {
cin>>tmp;
buf[i] = tmp;
if(x.count(tmp))
x[tmp].push_back(i);
else
x[tmp] = {i};
}
dis[0] = 0;
for(int i=0;i<n-1;i++)
{
dis[i+1] = min(dis[i]+1,dis[i+1]);
auto it = upper_bound(x[buf[i]].begin(), x[buf[i]].end(), i);
if(it!=x[buf[i]].end())
dis[*it] = min(dis[i]+1,dis[*it]);
}
cout<<dis[n-1]<<endl;
return 0;
}