1107 斜率小於0的連線數量

2022-05-01 22:30:15 字數 1114 閱讀 9139

二維平面上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為點的數量(0 <= n <= 50000)

第2 - n + 1行:n個點的座標,座標為整數。(0 <= x[i], y[i] <= 10^9)

output

輸出斜率小於0的連線的數量。(2,3) (2,4)以及(2,3) (3,3)這2種情況不統計在內。
input示例

4

2 33 4

1 54 6

output示例

2

離散加樹狀陣列

將點按照x軸排序後,一次將點的y值離散後加入到樹狀陣列中

#include using

namespace

std;

#define lowbit(x) (x&(-x))

struct

node

}e[50006

];int sum[50016

];void add(int

x)int query(int

x)int n,a[50006],b[50006

];int

main()

sort(a+1,a+n+1

); sort(e+1,e+n+1

);

int l=1,r=0

;

int ans=0

; e[

0].x=-1

;

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

b[i]=lower_bound(a+1,a+n+1,e[i].y)-a;

//printf("%d ",b[i]);

ans+=query(b[i]+1

); }

printf(

"%d\n

",ans);

return0;

}

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 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為點...

斜率小於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為...