题目描述

逆序对问题对于大家来说已经是非常熟悉的问题了,就是求i<j时,a[i] > a[j]的组数。现在请你求出一串数字中的逆序对的个数,需要注意的是,这些数字均在[0,9]之内。

输入

第一行输入T,表示有T组测试数据
对于每组数据,首先输入n,代表有n个数(0<n<=10^6)
接下来输入n个数,每个数都在[0,9]之内

输出

输出逆序对的个数,且对10^9+7取模

--正文

使用的是归并排序求逆序对,其实还有很多种

PS: 打10^9的时候老是不小心多打个0少打个0,WA了半天,诶

#include <stdio.h>int a[1000001];
int tempa[1000001];
long long total = 0;
void merge(int left,int mid,int right){int endl = mid - 1,endr = right;int L = left,R = mid;int Tmp = left;int NumElements = right - left + 1; while (L<= endl && R <= endr) {if (a[L] <= a[R]) {tempa[Tmp++] = a[L++];}else {total += endl - L + 1;tempa[Tmp++] = a[R++];}} while (L<=endl){tempa[Tmp++] = a[L++];}while (R<=endr){tempa[Tmp++] = a[R++];}int i;for (i=0;i<=NumElements;i++,endr--){a[endr] = tempa[endr];}
}void mergesort(int left,int right){int mid = (left + right) / 2;if (left < right){mergesort(left,mid);mergesort(mid+1,right);merge(left,mid+1,right);}
} int main() {int time,T;scanf("%d",&T);for (time=1;time<=T;time++){int n;scanf("%d",&n);int i;for (i=1;i<=n;i++){scanf("%d",&a[i]);}total = 0;mergesort(1,n); printf("%lld\n",total % 1000000007);}return 0;
}

转载于:https://www.cnblogs.com/ToTOrz/p/6064084.html

XidianOJ 1024 简单逆序对相关推荐

  1. 【数据结构笔记32】排序算法概述、简单排序(冒泡排序、插入排序)、逆序对

    本次笔记内容: 9.1.1 概述 9.1.2 冒泡排序 9.1.3 插入排序 9.1.4 时间复杂度下界 文章目录 排序算法前提条件 冒泡排序 插入排序 时间复杂度下界 逆序对(inversion) ...

  2. 期望dp ---- B. Tree Array 思维+期望dp 逆序对期望数

    题目大意 题目大意: n(n≤200)n(n\leq200)n(n≤200)个节点的树.初始的时候,等概率随机选择一个点标记,接来随机选择一个与标记点相连的未标记点来标记,直到所有的点都被标记.根据点 ...

  3. szu 寒训第二天 树状数组 二维树状数组详解,以及树状数组扩展应用【求逆序对,以及动态第k小数】

    树状数组(Binary Index Tree) 树状数组可以解决可以转化为前缀和问题的问题 这是一类用以解决动态前缀和的问题 (有点像线段树简版) 1.对于 a1 + a2 + a3 + - + an ...

  4. 【牛客每日一题】4.16 逆序对 ( 数学 , 排列组合 ,快速幂 , 快速乘 )

    [每日一题]逆序对 链接:https://ac.nowcoder.com/acm/problem/14731 来源:牛客网 题目描述 求所有长度为n的01串中满足如下条件的二元组个数: 设第i位和第j ...

  5. 牛客练习赛33 D tokitsukaze and Inverse Number (树状数组求逆序对,结论)

    链接:https://ac.nowcoder.com/acm/contest/308/D 来源:牛客网 tokitsukaze and Inverse Number 时间限制:C/C++ 1秒,其他语 ...

  6. 逆序对java_算法导论学习||查找逆序对

    查找逆序对很简单,自己变成就是几行,思路也是十分简单.但是题目要求用递归的方法,和合并排序很相似,网上也有很多人提供具体的程序,但是我对这种递归排序还是不能清晰得理解,所以在这里就不贴出来了,只放上了 ...

  7. POJ-排序-归并排序与逆序对

    排序:归并排序与逆序对 一.概念 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序 ...

  8. 用不同的姿势求逆序对(复习篇)

    用不同的姿势求逆序对(复习篇) 文章目录 用不同的姿势求逆序对(复习篇) 前言 讲解 归并排序 树状数组 线段树 题目 思路 代码 归并排序求逆序对 树状数组求逆序对 线段树求逆序对 历届试题 小朋友 ...

  9. 洛谷 P2513 [HAOI2009]逆序对数列

    题目描述 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数.那么逆序对数为k的这样 ...

  10. 牛客 - What Goes Up Must Come Down(树状数组求逆序对)

    题目链接:点击查看 题目大意:给出一个长度为 n 的序列,每次操作可以交换相邻两个数字的位置,现在问最小进行多少次操作,可以使得序列的相对大小呈山峰状(中间高两边低,或非严格递增或非严格递减) 题目分 ...

最新文章

  1. android适配右到左布局注意事项
  2. ActivityRecord、TaskRecord、ActivityStack相互关系以及Activity启动模式
  3. nagios出现乱码
  4. 经常会提到的Java面试题
  5. 【开源】SpringBootNetty聊天室V1.2.0升级版本介绍
  6. jmeter时间函数格林尼治时间_VB常用函数——时间函数和DateDiff函数
  7. spring依赖注入_Spring源码阅读:Spring依赖注入容器
  8. 引用到网站绝对路径Server.MapPath(~/myfile.mdb)
  9. 数据库系统原理复习提纲
  10. python 编码 解码 读写文件
  11. js 用submit()方法提交表单,页面闪退问题以及解决方法
  12. eclipse配置tomcat,并部署一个Java web项目到tomcat上
  13. SFS2X 例子(java 扩展加as 客户端)
  14. 简单工厂模式和策略模式的区别
  15. 零基础学习用labview制作温度采集系统
  16. python合并excel表格
  17. 计算机电子预览室配置清单,完整的停车场管理系统设计方案-附停车场管理详细大样图及安装图!...
  18. Mac安装win10出现的错误无法分区和Boot Camp分区不足
  19. 第三十届香港金像奖(转)
  20. 【重学UML】UML类图关系及其对应代码

热门文章

  1. DockOne微信分享(一四一):如何开发部署Kubernetes Native应用
  2. Python3.4下使用sqlalchemy
  3. 老李分享:Web Services 组件
  4. HTML中的select只读
  5. [转]浅谈算法和数据结构: 八 平衡查找树之2-3树
  6. Delphi2010中向TRxRichEdit控件中插入OLE对象。
  7. H3C DHCP中继和RIP配置实验
  8. java 多环境 虚拟环境_Spring profile通过多种方法实现多环境支持
  9. python背包问题递归_想问下大神python的背包问题的源代码(最好玩也有伪代码,请用递归法实现),因为只学过递归法,所...
  10. JavaScript数据类型之String