听说你会求逆序对??(自创的脑洞题)

关于acm 专栏收录该内容
2 篇文章 0 订阅

今天脑洞有点大,出个题玩一下,希望各位开心!

题意:给出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,非常欢迎!!

  • 1
    点赞
  • 1
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值