1203: 逆序数

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 569  Solved: 119
[Submit][Status][Web Board]

Description

在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数不小于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。

如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。给出一个整数序列,求该序列的逆序数。

Input

多组测试数据

每组测试数据分两行,第一行一个正整数n(n <= 50000)

第二行有n个元素( 0 <= A[i] <= 10^9)

Output

每组测试数据输出一行表示逆序数

Sample Input

4

2 4 3 1

3

1 1 1

Sample Output

4

3

HINT

Source

[Submit][Status][Web Board]

中文  English  
Anything about the Problems, Please Contact Admin:admin 
All Copyright Reserved 2010-2011 ZCMU TEAM

#include<bits/stdc++.h>
using namespace std;#define e exp(1)
#define pi acos(-1)
#define mod 1000000007
#define inf 0x3f3f3f3f
#define ull unsigned long long
#define ll long longconst int maxn = 3e6+200;
int ans;
int a[maxn],temp[maxn];
void merge(int l,int mid,int r)
{int i=l;int j=mid+1;int k=l;while(i<=mid&&j<=r){if(a[j]>a[i]){temp[k++]=a[i++];}else{ans+=mid-i+1;temp[k++]=a[j++];}}while(i<=mid)temp[k++]=a[i++];while(j<=r)temp[k++]=a[j++];for(i=l;i<=r;i++)a[i]=temp[i];
}
void merge_sort(int x,int y)
{if(x>=y)return ;int t=x+y>>1;merge_sort(x,t);merge_sort(t+1,y);merge(x,t,y);
}
int main()
{int n;while(~scanf("%d",&n)){for(int i=0;i<n;i++)scanf("%d",&a[i]);ans=0;merge_sort(0,n-1);printf("%d\n",ans);}}

zcmu1203(逆序对,归并排序)相关推荐

  1. [剑指offer][JAVA]面试题[51][数组中的逆序对][归并排序]

    [问题描述]面试题51.数组中的逆序对 (困难) 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1:输入: [7, ...

  2. [洛谷P1908] 逆序对|归并排序|树状数组

     题目描述 Description 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为&qu ...

  3. 数组中的逆序对-------归并排序应用

    题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%100 ...

  4. 利用归并排序求逆序对

    在逆序对的问题中,如果采用暴力求解的方法,一般也是有效的,但是O(n2)时间复杂度实在是难以接受的.但是对于逆序对问题,却有一个看似不想关的算法来解决–归并排序.时间复杂度和空间复杂度完全与归并排序一 ...

  5. 【hihocoder】三十九周:二分.归并排序之逆序对

    就是用归并排序求数组中得逆序对.假设数组为a:[2 4 5],和b:[1 3],那么在这一次归并的时候逆序对这样求,belement表示当前result数组中b数组对应的元素个数,total表示逆序对 ...

  6. 泛 归并排序 及 逆序对

    今天写一个归并排序的模板,返回值为该序列的逆序对数 基本思路 归并排序就是利用二分的思想,将区间无限递归二分,直到当前划分区间只包含一个元素或没有元素的时候(我们认为这个序列是自动有序的),我们回溯到 ...

  7. python 归并排序,合并有序数组,逆序对个数

    归并排序,合并有序列表,求逆序对个数 之所以将标题中三者放一起是因为它们有密不可分的关系. 合并有序列表 定义一个空列表 li 用来存放排序后的值; 定义两个 cursor lc 和 rc,分别指向左 ...

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

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

  9. hust1347(归并排序求逆序对)

    题意: 给出一个数列,你要对这个数列的数字进行k次交换操作,使得交换之后的数列逆序对虽少. 思路: 求原数列的逆序对,再和k比就行了.求逆序对要用归并排序,因为树状数组开不下. 代码: #includ ...

  10. 信息竞赛进阶指南--归并排序求逆序对

    // 归并排序求逆序对 void merge(int l, int mid, int r) {// 合并a[l~mid]与a[mid+1~r]// a是待排序数组, b是临时数组, cnt是逆序对个数 ...

最新文章

  1. 数据库sql linux,linux安装mysql数据库
  2. Py之pygame:有趣好玩——利用pygame库实现一个移动底座弹球的小游戏
  3. 最大流ISAP算法模板
  4. hibernate的缓存技术使用
  5. UE4学习-游戏退出、游戏打包
  6. js删除两个集合中共同元素_多个集合中的共同和独特元素
  7. 【Java】利用Swing实现登录页面
  8. 浮点数不能全等比较吗php,汇编语言FCOM指令:比较浮点数值
  9. 爬取亚马逊评论_如何利用插件抓取亚马逊评论和关键词?
  10. 再见了,面向对象编程
  11. Hadoop开发环境搭建
  12. Axure RP8下载以及注册
  13. 层次分析法(AHP)原理_例题应用及代码
  14. 方正飞鸿智能信息平台(Fix ES2007)
  15. 学习计算机网络感想,计算机网络学习心得体会
  16. javascript解数独LeetCod-37
  17. python 离群值_python:删除离群值操作(每一行为一类数据)
  18. IIS SSL客户端证书(忽略/接受/必须)之三——思考验证(3)
  19. WPF DataGridTemplateColumn Visibility 绑定
  20. Blender中文场景概念原画创作教程

热门文章

  1. Makefile写法
  2. 修复bug的12个关键步骤:
  3. 关于Unity游戏开发方向找工作方面的一些个人看法
  4. iOS UIKit:UITableView
  5. 吴恩达 coursera AI 专项四第一课总结+作业答案
  6. LIBSVM的使用方法以及参数注释总结
  7. html传递json中文乱码,解决后台传数据到前台中文乱码问题,使用@ResponseBody返回json 中文乱码...
  8. 【Matlab】如何把数组矩阵写入txt文件?并用逗号或空格隔开
  9. [云炬创业管理笔记]第二章测试4
  10. [云炬创业基础笔记]第九章企业的法律形态测试6