求逆序數對

2021-10-08 15:23:49 字數 1442 閱讀 9130

題意:給出長度為n的序列,每次只能交換相鄰的兩個元素,問至少要交換幾次才使得該序列為遞增序列。

1.先對輸入的陣列離散化,使得各個元素比較接近,而不是離散的(a的操作就是離散化),

2.接著,運用樹狀陣列的標準操作來累計陣列的逆序數。

#include

<

iostream

>

#include

<

cstdio

>

#include

<

cmath

>

#include

<

string

>

#include

<

cstring

>

#include

<

stack

>

#include

<

algorithm

>

#include

<

iomanip

>

#include

<

map>

#include

<

queue

>

#include

<

vector

>

#include

<

set>

const

intinf

=0x3f3f3f3f;/

/1061109567

typedef

long

longll;

using

namespace

std;

const

intn

=500000+5

;lln,

m;inta[n

+5],

sum[n+

5];struct

nodes[

n];/

/修改void

add(

intp

,intx)

}int

ask(

intp

)return

ans;

}int

cmm(

nodex,

nodey)

intmain()

sort(s

+1,s

+1+n

,cmm);

for(

inti=1

;i<=n

;i++

)llans=0;

for(

inti=1

;i<=n

;i++

)cout

<

<

ans<

<

endl;}

}

樹狀陣列求逆序對(逆序數)

逆序數 也叫逆序對 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。無重複的數 include include include include include include using namespace...

求逆序數 逆序數 歸併排序

求排列的逆序數 分治 一 題目描述 總時間限制 1000ms 記憶體限制 65536kb 描述 在internet上的搜尋引擎經常需要對資訊進行比較,比如可以通過某個人對一些事物的排名來估計他 或她 對各種不同資訊的興趣,從而實現個性化的服務。對於不同的排名結果可以用逆序來評價它們之間的差異。考慮1...

NYOJ 求逆序數

時間限制 2000 ms 記憶體限制 65535 kb 難度 5 描述在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。現在,給你乙個n個元素的序列,請你判斷出它的逆序數是多少。比如 1 3 2 的逆序數就是...