就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;
}