C 逆序對的數量(歸併排序)

2021-10-09 22:25:49 字數 658 閱讀 8448

給定乙個長度為n的整數數列,請你計算數列中的逆序對的數量。

逆序對的定義如下:對於數列的第 i 個和第 j 個元素,如果滿足 i < j 且 a[i] > a[j],則其為乙個逆序對;否則不是。

輸入格式

第一行包含整數n,表示數列的長度。

第二行包含 n 個整數,表示整個數列。

輸出格式

輸出乙個整數,表示逆序對的個數。

資料範圍

1≤n≤100000

輸入樣例:

62 3 4 5 6 1

輸出樣例:

5歸併排序是求逆序對的利器,利用排序帶來的單調性一次求一把逆序對。

ac**:

#include

int n;

int a[

100010];

int temp[

100010];

long

long ans;

void

merge_sort

(int l,

int r)}}

intmain()

歸併排序 逆序對的數量

傳送門 輸入樣例 62 3 4 5 6 1 輸出樣例 5思路 利用歸併排序的思維統計逆序對的數量,可分為三種情況。實現 include using namespace std typedef long long ll const int maxn 1e6 5 int n int q maxn tmp...

逆序對的數量 歸併排序模擬

題目鏈結 給定乙個長度為n的整數數列,請你計算數列中的逆序對的數量。逆序對的定義如下 對於數列的第 i 個和第 j 個元素,如果滿足 i j 且 a i a j 則其為乙個逆序對 否則不是。第一行包含整數n,表示數列的長度。第二行包含 n 個整數,表示整個數列。輸出乙個整數,表示逆序對的個數。資料範...

逆序對 (歸併排序)

逆序對的nlogn方法,改進後的歸併排序 給定排列p,求排列的逆序對數量。p的長度 100000。要求o nlogn 定義歸併排序過程merge l,r merge l,r merge l,mid merge mid 1,r count l,mid,mid 1,r 只需要考慮左右兩段之間造成的逆序對...