Beauty of Array

#include<iostream>
#include<algorithm>
#define maxn 100005
typedef long long ll;
using namespace std;
int ishas[maxn];
int n;
ll add[maxn];                                  //add[k]表示第k个数输入后新增的和
ll dp[maxn];                                   //dp[i]表示从1到j的答案
ll w[maxn];                                    //w[j]表示数上一个j出现的位置
void init()
{
	int i;
	for(i = 0;i < maxn;i ++)
		w[i] = 0;
}
int main(void)
{
    int cas,i,j,shu;
    cin >> cas;
    while(cas --)
    {
        cin >> n;
        dp[0] = 0;
        add[0] = 0;
		init();
        for(i = 1;i <= n;i ++){
            cin >> shu;
            add[i] = add[i-1] + (i-w[shu]) * shu;
            dp[i] = dp[i-1] + add[i];
            w[shu]  = i;
        }
        cout << dp[n] << endl;

    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/zhangjialu2015/p/5306652.html