題目:求逆序數判斷交點
題意:
有東西兩個海岸,東有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...