Sequence Pair Weight
Posted Jozky86
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sequence Pair Weight相关的知识,希望对你有一定的参考价值。
题意:
一个数组a,其中两个一样的数的贡献为1,问这个数组的所有子串的贡献和是多少?
题解:
举例:
对于[1,2,1,2,1,1,4]
我们考虑第三个1,他会有什么贡献?
(x表示不选)
第一个1和他配对的情况:
[1,2,1,2,1,x,x]
[1,2,1,2,1,1,x]
[1,2,1,2,1,1,4]
第二个1和他配对的情况:
[x,2,1,2,1,x,x]
[x,2,1,2,1,1,x]
[x,2,1,2,1,1,4]
[x,x,1,2,1,x,x]
[x,x,1,2,1,1,x]
[x,x,1,2,1,1,4]
大家有看出什么规律吗?
对于第三个1,他的贡献为在他之前的所有1的长度(这个长度为两个1之间的长度),比如第一个1的长度为1(到数组头),第二个1的长度为2(到第一个1),然后乘以第三个1后面的数量,因为后面数可以顺着跟
仔细看看上面的举例分析就明白了
代码:
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
int T,a[100050],n;
long long ans;
map<long long,long long> mp;
int main()
{
scanf("%d",&T);
while(T--)
{
ans=0;
mp.clear();
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for (int i=1;i<=n;i++)
{
ans=ans+(n-i+1)*mp[a[i]];
mp[a[i]]+=i;
}
printf("%lld\\n",ans);
}
}
以上是关于Sequence Pair Weight的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #721 (Div. 2) C. Sequence Pair Weight
C - Sequence Pair Weight(组合数学)
C. Sequence Pair Weight——Codeforces Round #721 (Div. 2)
Codeforces Round #721 (Div. 2) C. Sequence Pair Weight(计算贡献/STL)