题目

MoveToEx找到了很多不同颜色的珠子,他把这些珠子排成了一列,每个珠子的颜色用 表示。
定义一个区间的美观度为区间中不同颜色的珠子个数。
求:在所有 个区间中,所有区间的美观度之和是多少。

解题思路

枚举每个区间的左边界

  • 确定左边界后,枚举区间的右边界,统计区间内的珠子个数,将其计入结果

C++代码

#include<iostream>
#include<vector>
#include<unordered_set>
using namespace std;

int main(){
    int n;
    cin >> n;
    vector<int> color(n);
    for(int i=0; i<n; ++i)
        cin >> color[i];

    int sum = 0;
    for(int i=0; i<n; ++i){
        unordered_set<int> st;
        for(int j=i; j<n; ++j){
            st.insert(color[j]);
            sum += st.size();
        }
    }
    cout << sum << endl;
    return 0;
}