今天脑洞有点大,出个题玩一下,希望各位开心!
题意:给出1~n的一组排列,求所有区间逆序对个数的和
Input:
第1行输入n(1<=n<=100000)
第2行输入n个整数a[i](1<=a[i]<=n),且各不相同
Output:
输出一行,所有区间逆序对个数的和,答案太大要求对1e9+7取模
限时:1000ms 限内存:64000kB
Sample Input_1:
5
5 1 2 3 4
Sample Output_1:
10
Sample Input_2:
5
1 2 3 4 5
Sample Output_2:
0
Sample Input_3:
5
5 4 3 2 1
Sample Output_3:
35
题意已经很明显了,这里还是解释下样例一吧:
逆序对:if(a[i]>a[j]&&i<j)即为一对逆序对
区间(1,2)逆序对个数为1,区间(1,3)逆序对个数为2,区间(1,4)逆序对个数为3,区间(1,5)逆序对个数为4,其余区间逆序对个数都为0。
所以答案:1+2+3+4=10;
这是本人自创的第4道题,觉得这题还有点意思,遂与君分享,哈哈。
本人写了一个O(n*logn),有更优方案的请联系我,有赏!
想要输入输出数据,或想要题解代码,或想要分享代码,或想要探讨解题思路,请下方留言或联系本人qq:1942410374,非常欢迎!!