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

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

今日题目: 逆序对


题目描述


猫猫 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;
}


目录
打赏
0
0
0
0
13
分享
相关文章
Docker-制作Spring MVC工程镜像
  Spring MVC工程一般运行在Tomcat或者Jetty上,本文以Tomcat为例,那么我们首先得要有Tomcat的环境,有多种方式制作Spring MVC工程的镜像。
3561 0
MongoDB基础
MongoDB基础
474 0
两步教你ruoyi若依跳过前端拦截器变成自己的前端
如何通过修改前端配置和后端设置来跳过若依(RuoYi)前端的token验证,以便复用其前端框架并将其变成自己的前端。
 两步教你ruoyi若依跳过前端拦截器变成自己的前端
10G显存,使用Unsloth微调Qwen2并使用Ollama推理
本文主要使用Unsloth基于Qwen2基础模型微调对话机器人以及在Ollama上运行。
预约报名|RAG实践营——智能数据管理专题沙龙·成都站
立即报名,抢占现场参会名额,与各位大咖面对面探讨技术创新与应用模式!
180 9
|
11月前
|
如何在 Java 中创建 ArrayList 列表?
【8月更文挑战第23天】
281 0
社区供稿 | 中文llama3模型哪家强?llama3汉化版微调模型大比拼
随着llama3的发布,业界越来越多的针对其中文能力的微调版本也不断涌现出来,我们在ModelScope魔搭社区上,搜集到几款比较受欢迎的llama3中文版本模型,来从多个维度评测一下,其对齐后的中文能力到底如何? 微调后是否产生了灾难性遗忘问题。
Acitiviti7基本使用-3、流程实例挂起与激活
Acitiviti7基本使用-3、流程实例挂起与激活
129 0
DeprecationWarning
DeprecationWarning: ANTIALIAS is deprecated and will be removed in Pillow 10 (2023-07-01). Use LANCZOS or Resampling.LANCZOS instead.
748 1
【Vue功能】回到顶部
网页中右下角点击回到顶部的功能,原理简单。
796 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等