[ABC252D] Distinct Trio Solution

更好的阅读体验戳此进入

题面

给定序列 an,求满足以下条件的三元组 (i,j,k) 的数量:

1i<j<kn,aiajak

Solution

首先不难想到三元组满足 i<j<k,那么就可以认为是去掉这个条件然后求本质不同三元组,也就是求组合数。

然后考虑正难则反,直接求不好求,考虑先求 (n3),然后考虑从中去掉不合法的方案。

显然要去掉的就是有两个数相同的组合数和有三个数相同的组合数。当然这个从容斥的角度来看三个数相同的似乎应该是加上,但是实现的时候会发现这个实际上不算是容斥。

我们实现的时候不难发现值域较小,于是想到需要建桶。枚举每个桶,令 i 的个数为 cnti,如果 cnti2,那么直接减掉 (cnti2)×(ncnti),这个式子很显然,并且这个是有且仅有两个数相同的方案数,所以不需要容斥,再次枚举,如果 cnti3 再减去 (cnti3) 即可。

Code

UPD

update-2022_12_03 初稿