一本通 第二部分 基础算法 第二章 数据排序 1311:【例2.5】求逆序对
2018-12-19 16:18
295 查看
1311:【例2.5】求逆序对
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 6093 通过数: 1270
【题目描述】
给定一个序列a1,a2,…,ana1,a2,…,an,如果存在i<ji<j并且ai>ajai>aj,那么我们称之为逆序对,求逆序对的数目。
【输入】
第一行为nn,表示序列长度,接下来的nn行,第i+1i+1行表示序列中的第ii个数。
【输出】
所有逆序对总数。
【输入样例】
4
3
2
3
2
【输出样例】
3
【提示】
N≤105,Ai≤105N≤105,Ai≤105。
#include<bits/stdc++.h> using namespace std; long long a[100001],r[100001]; long long n,ans; void asort(long long begin,long long end) { if(begin==end) return; long long mid=(begin+end)/2; asort(begin,mid); asort(mid+1,end); long long x=mid+1,y=begin,z=begin; while(x<=end&&y<=mid) if(a[x]<a[y]) { ans+=mid-y+1; r[z++]=a[x++]; } else r[z++]=a[y++]; while(x<=end) r[z++]=a[x++]; while(y<=mid) r[z++]=a[y++]; for(long long i=begin;i<=end;i++) a[i]=r[i]; } int main() { cin>>n; for(long long i=1;i<=n;i++) cin>>a[i]; asort(1,n); cout<<ans; return 0; }
相关文章推荐
- 一本通 第二部分 基础算法 第二章 数据排序 1184:明明的随机数
- 一本通 第二部分 基础算法 第二章 数据排序 1177:奇数单增序列
- [置顶] 信息学奥赛一本通(C++版) 第二部分 基础算法 第二章 数据排序
- 一本通 第二部分 基础算法 第二章 数据排序 1181:整数奇偶排序
- 一本通 第二部分 基础算法 第二章 数据排序 1183:病人排队
- [置顶] 信息学奥赛一本通(C++版) 第二部分 基础算法 第一章 高精度计算
- [置顶] 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划
- [置顶] 信息学奥赛一本通(C++版) 第二部分 基础算法 第八章 广度优先搜索算
- [置顶] 信息学奥赛一本通(C++版) 第二部分 基础算法 第三章 递推算法
- [置顶] 信息学奥赛一本通(C++版) 第二部分 基础算法 第四章 递归算法
- [置顶] 信息学奥赛一本通(C++版) 第二部分 基础算法 第七章 分治算法
- [置顶] 信息学奥赛一本通(C++版) 第二部分 基础算法 第六章 贪心算法
- [置顶] 信息学奥赛一本通(C++版) 第二部分 基础算法 第五章 搜索与回溯算法
- 基础数据结构与算法之非比较排序一:计数排序
- 第六章:数据结构基础。第二部分
- 大数据学习笔记之四十九 推荐算法的主要算法第二部分
- 数据结构(严蔚敏)第二章部分算法设计题的实现
- 一本通 第三部分 数据结构 第四章 图论算法 第二节 最短路径算法 1345:【例4-6】香甜的黄油
- 一本通 第三部分 数据结构 第四章 图论算法 第二节 最短路径算法 1376:信使(msner)
- 算法:C语言实现 (第1-4部分)基础知识、数据结构……