每日一题冲刺大厂第十七天 逆序对

简介: 大家好,我是泡泡,给大家带来每日一题的目的是为了更好的练习算法,我们的每日一题为了让大家练到各种各样的题目,熟悉各种题型,一年以后,蜕变成为一个不一样的自己!

今日题目: 逆序对


题目描述


猫猫 TOM 和小老鼠 JERRY 最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。


最近,TOM 老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中 ai>aj 且 i


Update:数据已加强。


输入格式


第一行,一个数 n,表示序列中有 n个数。


第二行 n 个数,表示给定的序列。序列中每个数字不超过 10^9。


输出格式


输出序列中逆序对的数目。


题目分析


题目难度:⭐️⭐️


题目涉及算法:树状数组,排序。


ps:有能力的小伙伴可以尝试优化自己的代码或者一题多解,这样能综合提升自己的算法能力


题解报告:


1.思路


可以用树状数组,逆序对板子解决这个问题,如果不懂的话可以去学习一下逆序对或者树状数组。


2.代码


#include <bits/stdc++.h>
using namespace std;
int n,a[5000002],b[5000002];
long long num=0;
void merge(int l,int r)
{
  int mid = (l+r)/2;
  if(l == r)
  {
    return ;
  }
  else
  {
    merge(l,mid); 
    merge(mid+1,r);
  }
  int i = l;
  int j = mid + 1;
  int t = l;
  while(i<=mid&&j<=r)
  {
    if(a[i]>a[j]) 
    { 
      num += mid - i + 1;
      b[t++] = a[j];
      j++;
    }
    else
    {
      b[t++] = a[i];
      i++;
    }
  }
  while(i<=mid)
  {
    b[t++] = a[i];
    i++; 
  }
  while(j<=r)
  {
    b[t++]=a[j];
    j++;
  }
  for(int i=l;i<=r;i++)
  {
    a[i] = b[i];
  }
  return ;
}
int main()
{
  cin>>n;
  for(int i=1;i<=n;i++)
  {
    cin>>a[i];
  }
  merge(1, n);
  printf("%lld",num);
  return 0;
}


目录
相关文章
|
编译器 C# 开发者
C# 10.0中的全局`using`指令:简化命名空间引用的新方式
【1月更文挑战第4天】本文介绍了C# 10.0中引入的全局`using`指令,该指令允许开发者在项目级别统一管理命名空间引用,从而消除源文件中重复的`using`语句。全局`using`指令通过减少冗余代码、提高可维护性和统一命名空间管理,为开发者带来了更高效的编码体验。文章详细解释了如何实现全局`using`指令,并探讨了其在实际项目中的优势和适用场景。
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux losetup命令使用教程 将一个文件或设备与一个回环设备(loop device)进行关联
【Shell 命令集合 磁盘管理 】Linux losetup命令使用教程 将一个文件或设备与一个回环设备(loop device)进行关联
682 0
|
存储 算法 Java
【DFS(深度优先搜索)详解】看这一篇就够啦
本文介绍了深度优先搜索(DFS)算法及其应用。DFS从某个顶点出发,深入探索图的每条路径,直到无法前进为止,然后回溯。文章详细解释了DFS的基本思想,并通过示例图展示了其执行过程。此外,文中还探讨了三种枚举方式:指数型枚举、排列型枚举和组合型枚举,并提供了具体的代码实现。最后,文章通过几道练习题帮助读者更好地理解和应用DFS算法。
10746 19
【DFS(深度优先搜索)详解】看这一篇就够啦
|
机器学习/深度学习 开发框架 人工智能
操作系统生态兼容与创新的平衡艺术
本次分享的主题是操作系统生态兼容与创新的平衡艺术,由中科方德周杰分享。主要分为五个部分: 1.操作系统生态中的兼容与创新之争 2.版本进化中库兼容与隔离平衡 3.跨架构生态的隔离与统一 4.多系统融合的生态新可能 5.生态兼容与创新平衡
336 2
|
监控 安全 关系型数据库
OceanBase数据库完整版和商业版
OceanBase数据库完整版和商业版
394 1
|
Android开发
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md
|
PHP 数据库 数据安全/隐私保护
PHP枫叶小说CMS源码 仿起点中文网源码
PHP枫叶小说CMS源码 仿起点中文网源码
1137 3
|
C# 开发者 Windows
48.c#:toolstrip控件
48.c#:toolstrip控件
536 1
|
XML 缓存 网络协议
面试题:TCP的粘包和拆包
面试题:TCP的粘包和拆包
227 1
|
开发者
【公告】阿里云开发者社区“关注后查看全文”功能调整通知
12月8日阿里云开发者社区将关闭博主“关注后查看全文”功能

热门文章

最新文章