NC210755. 数颜色
描述
输入描述
输入数据有两行,第一行有一个整数n,表示珠子的个数
第二行有n个正整数,表示每个珠子的颜色
输出描述
输出一个整数,表示所有区间的美观度之和
示例1
输入:
6 1 2 2 3 3 1
输出:
39
说明:
每个区间的不同颜色种类相加答案为39C++14(g++5.4) 解法, 执行用时: 47ms, 内存消耗: 532K, 提交时间: 2020-10-20 20:39:39
#include<bits/stdc++.h> using namespace std; set<int> s; int n,a[1100],ans; int main() { cin>>n; for(int i=0; i<n; i++) cin>>a[i]; for(int i=0; i<n; i++) { s.clear(); for(int j=i; j<n; j++) { s.insert(a[j]); ans += s.size(); } } cout<<ans<<endl; }
C++11(clang++ 3.9) 解法, 执行用时: 5ms, 内存消耗: 376K, 提交时间: 2020-09-04 21:27:58
#include<iostream> using namespace std; int n; int t[1005]; int s[1005]; int sum; int main() { cin>>n; for(int i=1;i<=n;i++) { int x; cin>>x; s[i]=s[i-1]+i-t[x]; t[x]=i; sum=sum+s[i]; } cout<<sum; return 0; }
Python3(3.5.2) 解法, 执行用时: 236ms, 内存消耗: 2768K, 提交时间: 2020-10-20 22:18:10
n=int(input()) ans=0 a=list(map(int,input().split(" "))) for i in range(n): s=set() for j in range(i,n): s.add(a[j]) ans+=len(s) print(ans)