逆序数,结合归并排序。

之前一直用树状数组写的,今天发现归并排序也很好写。

https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5?tab=answerKey

class Solution {
public:int a[200005] = {0}, tmp[200005] = {0};int sort(int left, int mid, int right) {int p1 = left, p2 = mid+1, k = left, ans = 0;while(p1 <= mid && p2 <= right) {if(a[p1] <= a[p2]) tmp[k++] = a[p1++];else {ans += mid-p1+1; tmp[k++] = a[p2++];}//ans += p2-k也可以,加上左侧还剩余的}while(p1 <= mid) tmp[k++] = a[p1++];while(p2 <= right) tmp[k++] = a[p2++];for(int i = left; i<=right; i++) a[i] = tmp[i];return ans;}int mergesort(int l, int r) {int m, ret = 0;if(l<r) {m = (l+r)/2;ret += mergesort(l, m);ret %= 1000000007;ret += mergesort(m+1, r);ret %= 1000000007;ret += sort(l,m,r);ret %= 1000000007;}return ret;}int InversePairs(vector<int> data) {for(int i = 0; i<data.size(); i++) a[i] = data[i];int res = mergesort(0, data.size()-1);return res;}
};

逆序数问题,用归并排序而非树状数组求解相关推荐

  1. 【OpenJ_Bailian - 2299 】Ultra-QuickSort (归并排序 或 离散化 + 树状数组)

    题干: In this problem, you have to analyze a particular sorting algorithm. The algorithm processes a s ...

  2. 树状数组相关应用之逆序对问题

    求逆序对 一元逆序对问题:POJ-2299 此题本质是一个求逆序对问题,对于一个无序数列,我们按照其顺序依次输入,并在每次输入时通过树状数组对已输入数列在其后方的序列进行个数求和,即可得到逆序数(先输 ...

  3. 树状数组原理及经典应用问题

    树状数组 对于数组相信大家并不陌生,那么为什么要在数组前面加上'树状'二字呢? 数组是一种存储结构,树状数组是一种逻辑结构,它巧妙的应用了二进制的某些性质,使得数组的某些区间查询和修改变得非常的快,就 ...

  4. 夜深人静写算法(三)- 树状数组

    目录   一.从图形学算法说起       1.Median Filter 概述       2.r pixel-Median Filter 算法 3.一维模型       4.数据结构的设计     ...

  5. 【学习笔记+习题集】(树状数组)(9473字)

    目录 板块一:树状数组 引子:lowbit 1.存入数据(单点修改) 2.区间查询 练习1:hdoj1541 3.区间修改和单点查询(差分数组) 练习1:hdoj 1556 练习2:洛谷P3368 4 ...

  6. 计蒜客(青出于蓝胜于蓝) dfs序+树状数组

    武当派一共有 n 人,门派内 n 人按照武功高低进行排名,武功最高的人排名第 1,次高的人排名第 2,... 武功最低的人排名 第 n.现在我们用武功的排名来给每个人标号,除了祖师爷,每个人都有一个师 ...

  7. js 数组 实现 完全树_算法和数据结构 | 树状数组(Binary Indexed Tree)

    本文来源于力扣圈子,作者:胡小旭.点击查看原文 力扣​leetcode-cn.com 树状数组或二叉索引树(英语:Binary Indexed Tree),又以其发明者命名为 Fenwick 树.其初 ...

  8. BZOJ-3289-Mato的文件管理-莫队+树状数组

    描述 给定一段 n(n≤50000) 个数的序列, m(m≤50000) 次询问 [L, R] 区间内相邻元素两两交换使得序列不降的最少次数. 分析 首先转化为一个逆序对的问题, 最少交换的次数就是逆 ...

  9. 树状数组与其应用(Python实现)(1)

    数组-树状数组 如果程序需要维护一个数组的**前缀和**,S[i] = a[0]+ a[1] + -- + a[i-1]. 那么一旦数组中的一个元素 a[k]发生改变,则S[k+1] -- S[N] ...

最新文章

  1. 快速云原生化,从数据中心到云原生的迁移实践
  2. 我在神策做研发丨做冲在前方的第一方队,造中国最好的开源 SDK
  3. 补:小玩文件1-统计文本文件里的字符个数
  4. 利用位运算的模四算法
  5. java需要先安装jdk_谢谢知乎。Java初学者首先下载 JDK 开发环境,然后再下 eclipse 对吗?那 tomcat是什么?还需要安装吗?...
  6. python中os模块里有哪些类_python-os模块的常用方法
  7. Golang练习题(自己认为比较不错的)
  8. 解决安装MarkupSafe安装 from setuptools import Feature 报错ImportError: cannot import name ‘Feature‘
  9. 几个常用的python脚本_几个很实用的python脚本
  10. Windows下使用命令打开远程桌面
  11. JS对象属性操作之定义属性篇
  12. 前端使用canvas拼接多张图片
  13. redis的hset hget mset mget是什么
  14. 老毛桃u盘装系统linux,老毛桃U盘PE重装系统教程
  15. 计算机老师教师节祝福语,送给老师教师节祝福语
  16. LigerUi中表(Grid)控件的相关属性笔记(持续添加中)
  17. 选择与循环:剪刀石头布_剪刀石头布十大奢侈家具,创造高端精致生活就是这么简单!...
  18. manjaro 安装的艰辛历程,常用软件安装以及踩坑
  19. python自动发送qq消息_自动给qq好友发消息
  20. 利用PWM原理实现调光灯

热门文章

  1. Delphi 对象的创建(create)与释放(free/destory)
  2. SDO_GEOMETRY Object Type
  3. ibatis的简介与初步搭建应用
  4. 关闭弹出窗体,刷新父页面
  5. [Leetcode][第17题][JAVA][电话号码的字母组合][回溯]
  6. mysql 添加唯一索引_浅谈Mysql索引
  7. css没有border,你未必知道的CSS小知识:为什么没有人使用border-image
  8. 计算机选修课学什么,计算机专业都学什么 主要课程有什么
  9. bower overrides 配置
  10. python重复输入上面指令_stdin stdout python:如何重复使用同一输入文...