題意:
左邊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 條路相連,因為是起點是從大到小,終點是取乙個前面點的路,所以肯定相交 具體處理就是利用...