51nod1107 逆序對數 歸併排序

2022-02-19 21:30:48 字數 854 閱讀 5646

題意:中文題誒~

思路:通過題意可以發現對於兩點p1(x1, y1),p2(x2, y2), 若x1y2則線段p1p2滿足要求,那麼顯然可以先按x值排下序,對應y序列的逆序對數目即為答案;

注意:對於x1==x2&&y1>y2的情況是不滿足題意的,可以通過過載排序去除x值相等的情況下的y逆序對;

**:

1 #include 2 #include 3 #include 4

#define ll long long

5using

namespace

std;67

const

int maxn=5e4+10;8

struct

nodep[maxn];

12 ll ans=0;13

14bool

cmp(node a, node b)

1819

void teger_sort(int* a, int* t, int x, int

y)else32}

33for(int i=x; i//

**將臨時陣列裡已排序的元素還原到原陣列

34 a[i]=t[i];35}

36}37}

3839

int main(void

)45 sort(p, p+n, cmp);

46for(int i=0; i)

49 teger_sort(a, t, 0

, n);

50 printf("

%lld\n

", ans);

51return0;

52 }

view code

51Nod 1107 斜率小於0的連線數量

二維平面上n個點之間共有c n,2 條連線。求這c n,2 條線中斜率小於0的線的數量。二維平面上的乙個點,根據對應的x y座標可以表示為 x,y 例如 2,3 3,4 1,5 4,6 其中 1,5 同 2,3 3,4 的連線斜率 0,因此斜率小於0的連線數量為2。input第1行 1個數n,n為點...

逆序數 51nod 1019 歸併 分治

在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序數是4。給出乙個整數序列,求該序列的逆序數。input 第1行 n,n為序列的長度 n 5000...

51Nod 1019 逆序數 逆序偶 歸併排序

1019 逆序數 在乙個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為乙個逆序。乙個排列中逆序的總數就稱為這個排列的逆序數。如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序數是4。給出乙個整數序列,求該序列的逆序數。input 第1行 n,n為序列的...