題目:給定平面上若干矩形,求出被這些矩形覆蓋過至少兩次的區域的面積.
分析:在求面積並的基礎上增加了乙個成員len2,記錄被覆蓋至少兩次的長度,num標記表示這一部分至少被全覆蓋了幾次(num = 1不一定代表這一段覆蓋了只覆蓋一次,還要看子節點)。同時考慮離散化。
**:
1 #include 2using
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行資料,每一行包含四個浮點數,代表平面上的乙個矩形的左上角座標和右下角座標...