题目链接
题目类型:树状数组求解逆序数
题目来源:2016 Multi-University Training Contest 5
题目分析
题目大意
给出$n$个数,问有多少个组合,使$a \neq b \neq c \neq d, 1 \lt a \lt b \leq n, 1 \leq c \lt d \leq n, A{a} \lt A{b}, A{c} \gt A{d}$
解析
很明显,先找出来所有$A{a} \lt A{b}$的情况,再找出来所有$A{c} \gt A{d}$,相乘再减去数字重复的部分,分析一下,当重复的情况必然只有三个不同的数字,这三个不同的数字满足上面的两个条件,所以我们要把他减去。(a,b)和(c,d)两两组和,共有4种情况。我们可以使用树状数组求出来每个数左边比他大的数量LeftBig,左边比他小的数量LeftSmall,右边比他大的数量RightBig,右边比他小的数量RightSmall。左边的两个数和右边的两个数分别相乘求和即为重复的情况的数量,求出总的顺序数和逆序数然后相乘减去这些重复的情况即为所求。
代码
1 |
|