当前位置: 首页 > news >正文

牛客1018逆序数-归并排序

题目:1018-逆序数_2021秋季算法入门班第十一章习题:线段树、树状数组

归并排序思想:数据结构合集 - 归并排序(非递归与递归算法过程, 效率分析, 稳定性分析)_哔哩哔哩_bilibili

int a[M], b[M]; // a[M]待排序数组 b[M]临时数组
void ms(int l, int r) // 归并排序 merge sort
{if (l >= r)return;int mid = (l + r) / 2;ms(l, mid), ms(mid + 1, r);int k = 0, x = l, y = mid + 1; // 用回溯,进行排序while (x <= mid && y <= r)//对两个片段进行合并{if (a[x] <= a[y])b[k++] = a[x++];elseb[k++] = a[y++]; }while (x <= mid)b[k++] = a[x++];while (y <= r)b[k++] = a[y++];// 上面的 k从0开始往b[i]记录,所以这里的 j也是从0开始for (int i = l, j = 0; i <= r; i++, j++)a[i] = b[j];
}

逆序数题目的代码只要加一个计算即可

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, m, op;
const int M = 1e5 + 10;
int a[M], b[M]; // a[M] 待排序数组 b[M]临时数组
int ans;
void ms(int l, int r) // 归并排序 merge sort
{if (l >= r)return;int mid = (l + r) / 2;ms(l, mid), ms(mid + 1, r);int k = 0, x = l, y = mid + 1; // 用回溯,进行排序while (x <= mid && y <= r) // 对两个片段进行合并{if (a[x] <= a[y])b[k++] = a[x++];else // 此处说明a[x]>a[y],是逆序对,// 因为每个片段内都是升序的,所以有mid-x+1个数大于a[y]b[k++] = a[y++], ans += mid - x + 1;}while (x <= mid)b[k++] = a[x++];while (y <= r)b[k++] = a[y++];// 上面的 k从0开始往b[i]记录,所以这里的 j也是从0开始for (int i = l, j = 0; i <= r; i++, j++)a[i] = b[j];
}
void solve()
{int n;cin >> n;for (int i = 1; i <= n; i++)cin >> a[i];ms(1, n);cout << ans;
}signed main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int t = 1;// cin >> t;while (t--){solve();}
}

相关文章:

  • 金融的本质是智融、融资的实质是融智、投资的关键是投智,颠覆传统金融学的物质资本中心论,构建了以智力资本为核心的新范式
  • PyTorch 张量与自动微分操作
  • 全球化电商平台Azure云架构设计
  • 期末代码Python
  • iptables的基本选项及概念
  • 串 Part 1
  • 数据链路层(MAC 地址)
  • Gemini 解释蓝图节点的提示词
  • STC单片机与淘晶驰串口屏通讯例程之04【密码登录与修改】
  • 有哪些场景不适合使用Java反射机制
  • 基于C++实现的深度学习(cnn/svm)分类器Demo
  • H3C无线控制器自动信道功率调整典型配置实验
  • 数据结构小扫尾——栈
  • JAVA:使用 Maven Assembly 创建自定义打包的技术指南
  • Kubernetes(k8s)学习笔记(七)--KubeSphere 最小化安装
  • 音频感知动画新纪元:Sonic让你的作品更生动
  • 矩阵置零(中等)
  • 五一假期集训【补题】
  • 研0大模型学习(第12天)
  • 【C++】智能指针RALL实现shared_ptr
  • 发表“男性患子宫肌瘤”论文的杂志一年发文三千余篇,中介称可提供代写
  • 观察|“离境退税”撬动上海“五一”假期入境消费
  • G40迎来返程大车流,今明两日预计超13万辆车经长江隧桥进沪
  • 美国得克萨斯州发生5.4级地震,震源深度10千米
  • 印度宣布即日起对所有巴基斯坦航班关闭领空
  • 网商银行2024年年报发布,客户资产管理规模超过1万亿