描述
在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。
現在,給你乙個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
01使用樹狀陣列解決
看了一下書,就是首先把數進行離散處理,將他們變成小的數
例如: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 的逆序數就...