http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5496

The 12th Zhejiang Provincial Collegiate Programming Contest - D
Beauty of Array

Time Limit: 2 Seconds      Memory Limit: 65536 KB

Edward has an array A with N integers. He defines the beauty of an array as the summation of all distinct integers in the array. Now Edward wants to know the summation of the beauty of all contiguous subarray of the array A.

Input

There are multiple test cases. The first line of input contains an integer T indicating the number of test cases. For each test case:

The first line contains an integer N (1 <= N <= 100000), which indicates the size of the array. The next line contains N positive integers separated by spaces. Every integer is no larger than 1000000.

Output

For each case, print the answer in one line.

Sample Input

3
5
1 2 3 4 5
3
2 3 3
4
2 3 3 2

Sample Output

105
21
38 分析: 水题、

AC代码:

 #include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
#define ls 2*i
#define rs 2*i+1
#define up(i,x,y) for(i=x;i<=y;i++)
#define down(i,x,y) for(i=x;i>=y;i--)
#define mem(a,x) memset(a,x,sizeof(a))
#define w(a) while(a)
#define LL long long
const double pi = acos(-1.0);
#define Len 1000005
#define mod 786433
#define exp 1e-5
const int INF = 0x3f3f3f3f; LL dp[Len];
int hsh[Len]; int main()
{
int t,n,a;
scanf("%d",&t);
w(t--)
{
memset(hsh,,sizeof(hsh));
scanf("%d",&n);
dp[]=;
for(int i=;i<=n;i++)
{
scanf("%d",&a);
dp[i]=dp[i-]+a+(i--hsh[a])*a;
hsh[a]=i;
}
LL ans=;
for(int i=;i<=n;i++)
ans+=dp[i];
printf("%lld\n",ans);
}
}
 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <set>
#include <deque>
#include <cctype>
#define LL long long
#define INF 0x7fffffff
using namespace std;
long long int dp[];
int a[];
int main() {
int t;
scanf("%d",&t);
while(t--){
int n; scanf("%d",&n);
map<int,int> num; //num记录前一个a[i]的位置 for(int i = ;i < n;i++){
scanf("%d",&a[i]);
num[a[i]] = ;
}
dp[] = ;
dp[] = a[];
num[a[]] = ; for(int i = ;i < n;i++){
/*
dp[i] 为前i个美丽的数组的和
前i个和包括前i-1个的和 dp[i-1] 还有由第i个数组成的和 dp[i] - dp[i-1] + a[i] * (i+1 - num[a[i]]);
其中的i+1 - num[a[i]] 是用于去除重复的a[i],重复的只计算一次
*/
dp[i+] = dp[i] + dp[i] - dp[i-] + a[i] * (i+ - num[a[i]]);
num[a[i]] = i+; //将新的位置记录下来
}
cout << dp[n] << endl;
}
return ;
}

另外附上本次比赛的终榜:(1-104)

最新文章

  1. spring mvc 4.3.2 + mybatis 3.4.1 + mysql 5.7.14 +shiro 幼儿园收费系统 之 动态组合条件查询
  2. flash
  3. git merge之squash
  4. Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配
  5. 7.python模块补充
  6. 单源最短路径的Bellman-Ford 算法
  7. Linux kernel AACRAID Driver Compat IOCTL 本地安全绕过漏洞
  8. service redis does not support chkconfig的解决办法
  9. 02、Unicode 汉子转码小工具
  10. WinForm 控件(下)
  11. 2017-07-05 (whereis which find)
  12. svn提交代码时不要提交bulid里的内容,会报错
  13. C# 创建Dll文件供程序调用方法
  14. Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project ppcloud-common: Compilation failure
  15. deno学习四 docker 运行官方的一个http file server
  16. Liunx read
  17. 删除php数组中的元素
  18. java spring 等启动项目时的异常 或 程序异常的解决思路
  19. PHP命名空间学习笔记
  20. kubernetes外部访问的几种方式

热门文章

  1. c语言学习上的思考与心得
  2. ubuntu 14 安装 JDK
  3. angularJS的$watch和$apply
  4. js实现选项卡
  5. LightOj1418 - Trees on My Island(Pick定理)
  6. angularJs:双向数据绑定
  7. ThreadLocal 多线程并发,数据隔离
  8. ApacheBench(ab)使用详解
  9. 30天,O2O速成攻略【7.18广州站】
  10. WPF基础知识、界面布局及控件Binding