poj 3067 樹狀陣列求逆序數

2021-09-29 16:08:21 字數 826 閱讀 5701

題目:求逆序數判斷交點

題意:

有東西兩個海岸,東有n個點,西有m個點,東海岸的第xi個點連線東海岸的yi點,求有多少個交點

題解:

把k條邊按照x從小到大排序,如果x相同把y按照從小到大排序,然後利用樹狀陣列求y的逆序數

ac**:

#include

#include

#include

using namespace std;

//樹狀陣列求逆序數

#define ll long long

#define maxn 3005

struct node

temp[maxn*maxn]

;ll c[maxn]

;bool

cmp(node x,node y)

//排序求交點

ll n,m;

ll lowbit(ll x)

ll update(ll i,ll num)

}ll getsum(ll i)

return ans;

}int main(

) sort(temp,temp+k,

cmp)

; ll ans=0;

for(ll i=

0;iprintf(

"test case %lld: %lld\n",+

+id,ans);}

}

poj 3067 交叉對 樹狀陣列求逆序數

題意 左邊n個數,右邊m個數,按順序排號。給他們之間的連通關係。然後求他們總共有幾個交叉點。如 1 4 2 3 3 2 1 4 這張圖畫出來有5個交叉點。解析 將對應關係的x排序,餘下的數找逆序對的個數就是所求的交叉點了。難點就在這個轉換。include include include includ...

poj 3067 樹狀陣列

poj 3067樹狀陣列.cpp 定義控制台應用程式的入口點。include stdafx.h include include using namespace std const int maxn 1010 int sum maxn struct line return b a.b 按第2個座標降序...

POJ 3067 樹狀陣列

題意 日本的東西海岸分別有 m,n 座城市,從北至南依次編號,現在東西海岸的某些城市之間修建公路,求所有交點的數量。題解 若 a,b 兩公路存在交點的話,必有 a.east b.east,a.west b.west 或者 a.east b.east,a.west b.west。對每一條公路的 eas...