樹狀陣列 POJ 3067 Japan

2021-06-18 14:59:25 字數 670 閱讀 8037

樹狀陣列的典型應用,典型輸入如下:

13 4 4

1 42 3

3 23 1

表示有4條連線,如圖:

顯然有5個交點。怎麼求呢?對輸入的數對(x,y)做排序,先按x公升序排,x相等按y公升序排,然後對y做樹狀陣列,每次更新檢查在他後面有多少個元素即可。

**:

#include #include using namespace std;

int arr[100] = ;

struct pair

;int cmp(const pair &one, const pair &other)

int lowbit(int x)

int gsum(int *p, int n, int pos)

void modify(int *p, int n, int pos, int val)

int main()

sort(pp,pp+m,cmp);

for(i=0; i

連線: 1 4

連線: 2 3

連線: 3 1

連線: 3 2

交叉點個數: 5

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