覆蓋的面積 HDU 1255 (求面積的交)

2022-05-08 05:45:11 字數 1365 閱讀 3895

題目:給定平面上若干矩形,求出被這些矩形覆蓋過至少兩次的區域的面積.

分析:在求面積並的基礎上增加了乙個成員len2,記錄被覆蓋至少兩次的長度,num標記表示這一部分至少被全覆蓋了幾次(num = 1不一定代表這一段覆蓋了只覆蓋一次,還要看子節點)。同時考慮離散化。

**:

1 #include 2

using

namespace

std;

3const

int maxn = 2010;4

struct

edge59

bool

operator

< (const edge& b)const

1013

}e[maxn];

1415

struct

node

1621 }t[maxn << 2

];22

double

x[maxn];

2324

void pushup(int

tar)

2539

40void build(int l, int r, int

tar)

4147

48void update(int l, int r, int v, int

tar)

4957

int mid = (t[tar].l + t[tar].r) >> 1;58

if (r <= mid) update(l, r, v, tar << 1

);59

else

if (l > mid) update(l, r, v, tar << 1 | 1

);60

else update(l, mid, v, tar << 1), update(mid + 1, r, v, tar << 1 | 1

);61

pushup(tar);62}

6364

intmain()

6581 sort(e + 1, e + 1 + 2 *n);

82 sort(x + 1, x + 1 + 2 *n);

83 tot = unique(x + 1, x + 1 + 2 * n) - x - 1;84

//cout << tot << endl;

85 build(1, tot - 1, 1

);86

double res = 0;87

for (int i = 1; i < 2 * n; i++)

8895 printf("

%.2f\n

", res);96}

97 }

hdu 1255 覆蓋的面積

與poj1151略有不同 由於是大於等於2 的有效 所以應該更新到點 include include include include include include include include include includeusing namespace std define inf 0x3f3...

HDU 1255 覆蓋的面積

題目鏈結點這裡 這道題,很久以前做過,當時寫了個暴力,居然過了,然後一直想寫下線段樹的,結果一直被各種事搞得忘了。現在終於填坑了。include include include includeusing namespace std define mem x,y memset x,y,sizeof x...

HDU 1255 覆蓋的面積

題目 給定平面上若干矩形,求出被這些矩形覆蓋過至少兩次的區域的面積.input 輸入資料的第一行是乙個正整數t 1 t 100 代表測試資料的數量.每個測試資料的第一行是乙個正整數n 1 n 1000 代表矩形的數量,然後是n行資料,每一行包含四個浮點數,代表平面上的乙個矩形的左上角座標和右下角座標...