南邮 OJ 2068 爱魔法的露露

爱魔法的露露

时间限制(普通/Java) :  1200 MS/ 4000 MS          运行内存限制 : 65536 KByte
总提交 : 175            测试通过 : 21 

比赛描述

    仙灵女巫露露,对于魔法的热忱可是超出常人,要是发现了什么上古遗留下的魔法,她总是想方设法地获得,然后研究分析。而最近,他又从邪恶小法师维嘉那里获得了一个“奇怪”的魔法卷轴;

    这个魔法卷轴上有一大串数字,而且根据卷轴上的描述,这个魔法的威力指数来自于这一串数字中“魔法区间”的数量;

    所谓“魔法区间”指的是一段连续的闭区间,且这段区间上的所有数字均不相同;

    现在,露露想知道这个魔法的威力指数,你能帮帮她么?



输入

先输入一个正整数T,表示样例个数,1T10。

对于每一个样例,先输入一个正整数n,表示卷轴上的数字个数(1n106);

再输入n个整数,第i个数ai,表示卷轴上第i个数(0ai106)。

输出

对于每个样例,输出一个正整数,即威力指数。

题目保证结果在int范围内。

样例输入

1
3
1 2 3

样例输出

6

提示

  1. 读入数据请使用 scanf();

  2. 对于样例,共有{1},{2},{3},{1,2},{2,3},{1,2,3},6个魔法区间,所以威力为6。

题目来源

yuman




#include<iostream>
#define MAX_N 1000001
int a[MAX_N];
bool visited[MAX_N];
int main(){
	int t,n,i,count,begin,end;
	scanf("%d",&t);
	while(t--){
		count = 0;
		memset(visited,0,sizeof(visited));
		scanf("%d",&n);
		for(i=0;i<n;i++){
			scanf("%d",a+i);
		}
		begin=end=0;
		while(begin!=n){
			while(end!=n && !visited[a[end]]){
				visited[a[end]] = 1;
				end++;
			}
			count += end-begin;
			visited[a[begin]] = 0;
			begin++;
		}
		printf("%d\n",count);
	}
}


你可能感兴趣的:(ACM,南邮OJ,爱魔法的露露)