JLOI2016 圓的異或並

2022-06-19 01:12:15 字數 1138 閱讀 7400

平面上給定若干互不相交的圓(僅有包含和相離兩種關係),求圓的異或面積(覆蓋奇數次的區域貢獻答案)除以 \(\pi\)。

\(n\leq 2\times 10^5,|x_i|,|y_i|\leq 10^8\)

掃瞄線從左往右掃。由於圓和圓之間不相交,與掃瞄線交點位置關係不變(上半圓看成左括號,下半圓看成右括號,將會一直滿足括號序列合法)。然後加入乙個圓就維護下新加進來的兩個括號。使用set維護。複雜度 \(\mathcal o(n\log n)\)。

#include #define pb push_back

using std::vector; using std::set; using std::sort;

typedef long long ll;

typedef double db;

const int n = 200005;

const db eps = 1e-7;

int n, x[n], y[n], r[n], tag[n];

struct node1 ;

vectorv;

bool cmp(node1 a, node1 b)

int x;

ll sqr(int x)

struct node2

friend bool operator < (node2 a, node2 b)

};sets;

int main() ), v.pb((node1));

} sort(v.begin(), v.end(), cmp);

for (int i = 0; i < v.size(); i++) ).first;

if (it != s.begin()) else tag[v[i].id] = 1;

s.insert((node2));

} else

s.erase((node2)), s.erase((node2));

} ll ans = 0;

for (int i = 1; i <= n; i++) ans += (tag[i] ? 1 : -1) * sqr(r[i]);

printf("%lld", ans);

return 0;

}

BZOJ4561 JLoi2016 圓的異或並

題目大意 給你一堆圓,只存在相離和包含的關係,求他們的異或面積並 如果考試的時候捲麵像我這麼標註,我怎麼能看錯題呢?用乙個掃瞄線,從左到右掃一遍,因為只有這兩種關係,所以掃瞄線上的這些圓相對位置是固定的 我們可以把每個圓想象成兩個括號,括號之間不會相交,每當掃瞄線掃到乙個新的圓時,相當於在某處新增一...

bzoj4561 JLoi2016 圓的異或並

hdu3511 變式 層次為奇數的加,偶數的減 include include include include include using namespace std define n 200001 intline struct line e n 1 int lev n bool equal dou...

Bzoj4561 JLoi2016 圓的異或並

time limit 30 sec memory limit 256 mb submit 521 solved 224 在平面直角座標系中給定n個圓。已知這些圓兩兩沒有交點,即兩圓的關係只存在相離和包含。求這些圓的異或面 積並。異或面積並為 當一片區域在奇數個圓內則計算其面積,當一片區域在偶數個圓內...