【POJ2299】Ultra-QuickSort(逆序对,归并排序)
problem
- 多组数据,每组给你一个长为n的序列
- 求该序列的逆序对个数
solution
- 对于 i < j 且 a[i] > a[j],称a[i]与a[j]构成逆序对。
- 归并合并比较时,对于两个指针i,j :如果a[j] < a[i],那么a[i~mid]都比a[j]要大,他们都会与a[j]构成逆序对,将他们加入答案即可。
codes
#include<iostream>
using namespace std;
const int maxn = 500010;
int a[maxn]; long long ans = 0;
void MergeSort(int l, int r){if(l >= r)return ;int m = l+r>>1;MergeSort(l,m);MergeSort(m+1,r);int i = l, j = m+1;int t[r-l+1], k = 0;while(i<=m && j<=r){if(a[i]<=a[j])t[k++]=a[i++];else{t[k++] = a[j++];ans += m-i+1;//加上剩余元素个数}}while(i<=m)t[k++]=a[i++];while(j<=r)t[k++]=a[j++];for(i=l, k=0; i <= r; i++,k++)a[i]=t[k];
}
int main(){int n;while(cin>>n &&n){ans = 0;for(int i = 1; i <= n; i++)cin>>a[i];MergeSort(1,n);cout<<ans<<"\n";}return 0;
}
【POJ2299】Ultra-QuickSort(逆序对,归并排序)相关推荐
- [剑指offer][JAVA]面试题[51][数组中的逆序对][归并排序]
[问题描述]面试题51.数组中的逆序对 (困难) 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1:输入: [7, ...
- [洛谷P1908] 逆序对|归并排序|树状数组
题目描述 Description 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为&qu ...
- 数组中的逆序对-------归并排序应用
题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%100 ...
- 【逆序对】Ultra - Quicksort
POJ 2299 Ultra-QuickSort 只允许交换,比较相邻的元素, 求最少多少次交换可以使得序列有序 冒泡排序的次数-->数列中逆序对的个数减1-->最终为0 -->答案 ...
- POJ-排序-归并排序与逆序对
排序:归并排序与逆序对 一.概念 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序 ...
- 利用归并排序求逆序对
在逆序对的问题中,如果采用暴力求解的方法,一般也是有效的,但是O(n2)时间复杂度实在是难以接受的.但是对于逆序对问题,却有一个看似不想关的算法来解决–归并排序.时间复杂度和空间复杂度完全与归并排序一 ...
- 【hihocoder】三十九周:二分.归并排序之逆序对
就是用归并排序求数组中得逆序对.假设数组为a:[2 4 5],和b:[1 3],那么在这一次归并的时候逆序对这样求,belement表示当前result数组中b数组对应的元素个数,total表示逆序对 ...
- 泛 归并排序 及 逆序对
今天写一个归并排序的模板,返回值为该序列的逆序对数 基本思路 归并排序就是利用二分的思想,将区间无限递归二分,直到当前划分区间只包含一个元素或没有元素的时候(我们认为这个序列是自动有序的),我们回溯到 ...
- python 归并排序,合并有序数组,逆序对个数
归并排序,合并有序列表,求逆序对个数 之所以将标题中三者放一起是因为它们有密不可分的关系. 合并有序列表 定义一个空列表 li 用来存放排序后的值; 定义两个 cursor lc 和 rc,分别指向左 ...
最新文章
- 【算法】 - 滑动窗口
- CreateThread、_beginthread与AfxBeginThread的区别及其注意事项
- 2018ACM上海大都会赛: I. Matrix Game(最小费用最大流)
- BOMRemover v2.0 去除代码中的UTF-8 BOM
- Github hosts修改
- Go 开发关键技术指南 | 带着服务器编程金刚经走进 2020 年(内含超全知识大图)
- 如何在你朋友面前伪装黑客7(程序代码)
- 计算机金融学校排名2015,金融学院2015级各专业排名情况统计表
- 关于声音的前后左右上下的控制以及单声道立体声的区别
- 什么样男人必出轨 震惊!出轨男子名字中居然都有这字
- “无法连接到打印机。您输入的打印机名不正确 或者指定的打印机没有连接到服务器上”终极解决方法
- server 服务器文档,服务器文档,server document,音标,读音,翻译,英文例句,英语词典...
- 第一个工作单位的那些事
- 《西西弗神话》读后感
- 分享一些我的创业心得
- MySQL字段类型VARCHAR
- iPhone回收中这样看划痕就不会被压价了
- spss clementine安装
- 《疯狂Android讲义》学习笔记 -- 手势(Gesture)
- dcdc模块降额设计_DC-DC电源模块选型
热门文章
- 辨异 —— 数学基本概念
- 计算机的组成 —— 存储(内存/硬盘)
- 绘图神器 —— Graphviz 绘制数据结构相关图形
- 阶乘与 pi 的关系 —— 斯特林公式(Stirling formula)
- C++基础::STL中的定理
- python编程100例-python100例,python经典例题
- python入门代码大全-python入门代码指南教程书籍推荐2020总结全集汇总
- python编程语言-为什么我不建议你将python作为入门编程语言
- python必背入门代码-初学Python必背手册
- p语言是python吗-Python 这语言真是混乱和原始