788 逆序對的數量

2022-06-05 05:30:09 字數 886 閱讀 4766

題目描述

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

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

輸入格式

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

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

輸出格式

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

資料範圍

1≤n≤100000

輸入樣例:

62 3 4 5 6 1

輸出樣例:

思路

歸併排序

1 #include 2 #include 3 #include 4

using

namespace

std;

5 typedef long

long

ll;6

const

int max_n=1e5+5;7

8int

a[max_n], b[max_n];

9 ll res=0;10

11void mergesort(int l, int

r) 23}24

while(p1<=mid) b[cnt++]=a[p1++];

25while(p2<=r) b[cnt++]=a[p2++];

26for(int i=l; i<=r; i++) a[i]=b[i];27}

2829

intmain()

788 逆序對的數量

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

788 逆序對的數量 C

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

ACWing 788 逆序對的數量

給定乙個長n nn的數列,計算其逆序對數量。輸入格式 第一行包含整數n nn,表示數列的長度。第二行包含n nn個整數,表示整個數列。輸出格式 輸出乙個整數,表示逆序對的個數。資料範圍 1 n 100000 1 le n le 100000 1 n 10 0000 思路是歸併排序 分治 先累加左右兩...