当前位置:网站首页>逆序对的数量
逆序对的数量
2022-08-04 22:33:00 【Ding Jiaxiong】
题目
给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。
逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。
输入格式
第一行包含整数 n,表示数列的长度。
第二行包含 n 个整数,表示整个数列。
输出格式
输出一个整数,表示逆序对的个数。
数据范围
1≤n≤100000,
数列中的元素的取值范围 [1,109]。
输入样例:
6
2 3 4 5 6 1
输出样例:
5
思路分析



题解
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
typedef long long LL;
const int N = 100010;
int n;
int q[N],tmp[N];
LL merge_sort(int l , int r){
if(l >= r){
return 0;
}
int mid = (l + r) / 2;
LL res = merge_sort(l , mid) + merge_sort(mid + 1,r);
//归并的过程
int k = 0 , i = l , j = mid + 1;
while(i <= mid && j <= r){
if(q[i] <= q[j]){
tmp[k++] = q[i ++];
}
else{
tmp[k++] = q[j ++];
res += mid - i + 1;
}
}
while(i <= mid){
tmp[k ++] = q[i ++];
}
while(j <= r){
tmp[k ++] = q[j ++];
}
for(int i = l , j = 0 ; i <= r; i++ , j ++){
q[i] = tmp[j];
}
return res;
}
int main(){
cin >> n;
for(int i = 0; i < n; i++){
cin >> q[i];
}
cout << merge_sort(0 , n - 1) << endl;
return 0;
}

边栏推荐
猜你喜欢

Numpy on the superposition of two arrays

2022七夕程序员必备的表白黑科技(七夕限定款)

BUG | The interface returns abnormal data

深度学习 RNN架构解析

【3D建模制作技巧分享】ZBrush如何设置笔刷快捷键

Latex快速插入作者ORCID

湖仓一体电商项目(五):内网穿透工具-网云穿

Reconfigure the ffmpeg plugin in chrome

Open source summer | Cloud server ECS installs Mysql, JDK, RocketMQ

【游戏建模模型制作全流程】在ZBrush中雕刻恶魔城男性角色模型
随机推荐
阿里巴巴2022届秋招面试真题和答案!
质量管理大师爱德华·戴明博士经典的质量管理14条原则
论文解读(PPNP)《Predict then Propagate: Graph Neural Networks meet Personalized PageRank》
DREAMWEAVER8 part of the problem solution
Leaflets of three bouquet of roses
备战9月,美团50道软件测试经典面试题及答案汇总
Why is MySQL query slow?
【3D建模制作技巧分享】ZBrush如何重新拓扑
2022七夕程序员必备的表白黑科技(七夕限定款)
赶紧进来!!!教你C语言实现扫雷小游戏(文章最后有源码!!!)
Oracle增加表空间解决ORACLE ORA-01653: unable to extend table报错
炽热如初 向新而生|ISC2022 HackingClub白帽峰会圆满举办!
Lecture 2 Software Life Cycle
Autowired自动装配
文章占位 文章占位
移动web开发03
快速web开发框架——learun framework
Charles & TCPDump & Fiddler 抓包三兄弟七夕联手,还抓不到你的心?
今天是七夕,来看看程序员的土味情话。
关于el-table列表渲染