首页 > 其他 > 详细

【GDFZOJ 3002】颜色

时间:2020-07-27 16:34:14      阅读:62      评论:0      收藏:0      [点我收藏+]

正解

可以先假设每个区间中所有颜色都出现,然后减掉多算的答案。对每种颜色记录它出现的位置,则相邻两个位置间的所有区间都要减去,时间复杂度\(O(n)\)

代码

#include<bits/stdc++.h>
using namespace std;
using LL=long long;
const LL N=1e5+5;
LL a[N],f[N];
int main() {
	LL n;
	scanf("%lld",&n);
	for(LL i=1; i<=n; i++) {
		scanf("%lld",a+i);
	}
	LL ans=0;
	for(LL i=1; i<=n; i++) {
		ans+=(n-i+1)*(i-f[a[i]]),f[a[i]]=i;
	}
	printf("%lld",ans);
	return 0;
}

【GDFZOJ 3002】颜色

原文:https://www.cnblogs.com/Sam2007/p/13385256.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!