nyist 117 求逆序數

2022-08-09 00:48:20 字數 1253 閱讀 5374

描述

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

現在,給你乙個n個元素的序列,請你判斷出它的逆序數是多少。

比如 1 3 2 的逆序數就是1。

輸入第一行輸入乙個整數t表示測試資料的組數(1<=t<=5)

每組測試資料的每一行是乙個整數n表示數列中共有n個元素(2〈=n〈=1000000)

隨後的一行共有n個整數ai(0<=ai<1000000000),表示數列中的所有元素。

資料保證在多組測試資料中,多於10萬個數的測試資料最多只有一組。

輸出輸出該數列的逆序數

樣例輸入

2

21 1

31 3 2

樣例輸出

0

1使用樹狀陣列解決

看了一下書,就是首先把數進行離散處理,將他們變成小的數

例如:100 123 13 43 53454 313

離散:3 4 1 2 5 6

然後就是陣列陣列來解決問題了

** #include

#include

#include

#include

using namespace std;

#define n 1000006

typedef struct node

node;

node a[n];

long long b[n];

long long c[n];

int bity(int x)

void add(long long x,int n)

}long long qoery(long long x)

return s;

}int fun(node x,node y)

int main()

sort(a+1,a+n+1,fun);

long kk = 0;

int yy = 0;

for(i = 1; i <= n; i++)

else

a[i].v = kk;

}for(i = 1; i <= n; i++)

b[a[i].id] = a[i].v;

long long sum = 0;

for(i = n; i > 0; i--)

printf("%lld\n",sum);

}return 0;

}

nyist 117 求逆序數(雜湊表 樹狀陣列)

題意 漢語題。雜湊表不說了,樹狀陣列插點問線。include include include include includeusing namespace std define clr arr,v memset arr,v,sizeof arr const int m 10000007 templa...

nyoj117求逆序數

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

NYOJ117 求逆序數

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