逆序对的数量

news/2025/3/16 5:40:39/

给定一个长度为 n的整数数列,请你计算数列中的逆序对的数量。

逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。

输入格式

第一行包含整数 n ,表示数列的长度。

第二行包含 n  个整数,表示整个数列。

输出格式

输出一个整数,表示逆序对的个数。

数据范围

1≤n≤100000,

数列中的元素的取值范围 [1,10的9次方][1,10的9次方]。

输入样例:

6

2 3 4 5 6 1

输出样例:

5

代码:

#include<iostream>

 

using namespace std;

 

const int N=100010;

 

typedef long long LL;

 

int q[N],tmp[N];

 

LL merge_sort(int q[],int l,int r)

{

    if(l>=r) return 0;

    int mid=l+r>>1;

    LL res=merge_sort(q,l,mid)+merge_sort(q,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

        {

            res+=mid-i+1;

            tmp[k++]=q[j++];

        }

    }

    while(i<=mid) tmp[k++]=q[i++];

    while(j<=r) tmp[k++]=q[j++];

    for(i=l,j=0;i<=r;i++,j++) q[i]=tmp[j];

    return res;

}

int main()

{

    int n;

    cin>>n;

    for(int i=0;i<n;i++) cin>>q[i];

    cout<<merge_sort(q,0,n-1)<<endl;

    return 0;

}


http://www.ppmy.cn/news/92804.html

相关文章

Springcloud1---->Zuul网关

目录 简介加入zuul后的架构快速入门添加Zuul依赖编写zuul启动类编写zuul配置文件编写路由规则 面向服务的路由添加Eureka客户端依赖开启Eureka客户端发现功能添加Eureka配置&#xff0c;获取服务信息修改映射配置&#xff0c;通过服务名称获取 简化的路由配置过滤器使用场景自定…

【Python】字符串操作

知识目录 一、写在前面✨二、字符串逆序三、打印菱形四、总结撒花&#x1f60a; 一、写在前面✨ 大家好&#xff01;我是初心&#xff0c;很高兴再次跟大家见面。&#xff08;相遇就是缘分啊&#xff09; 今天跟大家分享的文章是 Python中的字符串操作 &#xff0c;希望能帮助…

一图看懂 typing_extensions 模块:允许在旧版Python上启用、实验新的类型系统特性,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 typing_extensions 模块&#xff1a;允许在旧版Python上启用、实验新的类型系统特性&#xff0c;资料整理笔记&#xff08;大全&#xff09; &#x1f9ca;摘要&#x1f9c…

【C++】容器篇(一)—— vector 的基本概述以及模拟实现

前言&#xff1a; 在之前&#xff0c;我们已经对 string类进行了基本的概述&#xff0c;并且手动的实现了string类中常用的接口函数。本期&#xff0c;我将带领大家学习的是STL库中的一个容器 -- vector 的学习。相比于之前的string类&#xff0c;本期的 vector 相对来说实现起…

凭据收集工具 Legion 瞄准额外的云服务

黑客在受感染的 Web 服务器上部署的名为 Legion 的商业恶意软件工具最近已更新&#xff0c;可以提取额外云服务的凭据以通过 SSH 进行身份验证。 这个基于 Python 的脚本的主要目标是获取存储在电子邮件提供商、云服务提供商、服务器管理系统、数据库和支付系统的配置文件中的…

数字电路基础

目录 一、不同进制之间的转换 二、逻辑代数基础 三、门电路 四、组合逻辑电路 五、半导体存储电路 六、时序电路 一、不同进制之间的转换 二-十转换&#xff1a; 十-二转换&#xff1a; 二-十六转换 十六-二转换 八-二转换 二-八转换 十六-十转换&#xff1a; 先转换成…

c++primer 第12章 动态内存

文章目录 第12章 动态内存12.1 动态内存与智能指针12.1.1 share_ptr类12.1.2 直接管理内存12.1.3 shared_ptr和new结合使用12.1.4 智能指针和异常12.1.5 unique_ptr12.1.6 weak_ptr 12.2 动态数组12.2.1 new和数组12.2.2 allocator类 12.3 使用标准库&#xff1a;文本查询程序1…

系统集成项目管理工程师 下午 真题 及考点(2018年下半年)

文章目录 一&#xff1a;第4章 项目管理一般知识&#xff0c;项目管理办公室的职责。第6章 项目整体管理二&#xff1a;第5章 项目立项管理。第14章 项目采购管理&#xff0c;采购文件。第13章 项目合同管理&#xff0c;按项目 付款方式 划分的合同分类三&#xff1a;第9章 项目…