给你三个 到 的排列 ,,。
称三元组 是合法的,当且仅当存在一个下标集合 满足
询问合法三元组的数量。
Constraints
$ n \leq 10^5 $
Solution
对于每一个合法三元组对应的 ,只保留对三元组有贡献的下标,可以得到 ,且与合法三元组一一对应。问题转化为统计 的数量。
当 时,所有下标集合都是合法的。
当 时,可以用总的下标集合数 非法下标集合数(即其中一个在 里都比另一个大)来统计,这一步可以用 cdq 分治来完成。
当 时,同样考虑非法下标集合数。分为几种情况进行讨论:
存在一个下标在 中都是最大的,同样可以用 cdq 分治来完成,记为 。
一个下标在 中的两个最大,另一个下标在 中的一个最大。考虑枚举 中的两个,计算有多少个下标集合满足其中一个在对应枚举的排列里是最大的,计总和为 。可以注意到, 中还包含着不合法的 种情况,所以实际上 。
最后 即可得到 时的下标集合数。
Code
1 |
|