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

2021-07-03 19:30:15 字數 1112 閱讀 8401

題意:

左邊n個數,右邊m個數, 按順序排號。

給他們之間的連通關係。

然後求他們總共有幾個交叉點。

如:1       4

2       3

3       2 ,1   

4      

這張圖畫出來有5個交叉點。

解析:將對應關係的x排序,餘下的數找逆序對的個數就是所求的交叉點了。

難點就在這個轉換。

**:

#include #include #include #include #include #include #include #include #include #include #include #include #define ll long long

#define lson lo, mi, rt << 1

#define rson mi + 1, hi, rt << 1 | 1

using namespace std;

const int maxn = 1000000 + 10;

const int inf = 0x3f3f3f3f;

const double eps = 1e-8;

const double pi = acos(-1.0);

const double ee = exp(1.0);

int n, m, k;

int c[maxn];

int lowbit(int x)

void update(int x, int num)

}int query(int x)

return res;

}struct node

a[maxn];

bool cmp(node a, node b)

int main()

sort(a + 1, a + k + 1, cmp);

memset(c, 0, sizeof(c));

ll ans = 0;

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

printf("test case %d: %lld\n", ca++, ans);

}return 0;

}

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

POJ 3067 樹狀陣列

題意 給你兩行數字,n個m個,然後給你k條線直接把兩個數連起來,問有多少個交叉的 思路 假定上一行是起點,下一行是終點。把路按照起點從大到下排序,然後可以直接對每條路查詢,這條路目前的交叉數,等於sum 終點 1 條路相連,因為是起點是從大到小,終點是取乙個前面點的路,所以肯定相交 具體處理就是利用...