BZOJ4561 JLoi2016 圓的異或並

2021-07-11 18:58:24 字數 963 閱讀 6816

題目大意:給你一堆圓,只存在相離和包含的關係,求他們的異或面積並

如果考試的時候捲麵像我這麼標註,我怎麼能看錯題呢?!

用乙個掃瞄線,從左到右掃一遍,因為只有這兩種關係,所以掃瞄線上的這些圓相對位置是固定的

我們可以把每個圓想象成兩個括號,括號之間不會相交,每當掃瞄線掃到乙個新的圓時,相當於在某處新增一對括號,而當掃瞄線掃完乙個圓時,相當於把乙個中間不包含任何東西的括號刪除

用set維護一下相對位置就行了

然後加完這個括號之後,假如他後面緊跟著乙個左括號,說明這兩個圓是並列的,即fi=fj

否則這個圓被那個圓直接包含,即fi=-fj

目前好像是bzoj的最短**,ljss和xuruifan寫的都是treap...

#include#include#include#include#include#define n 200010

using namespace std;

long long t;

struct circle;

struct pppb[n<<1];

bool cmp(ppp x,ppp y);

b[2*i]=(ppp);

} sort(b+1,b+2*n+1,cmp);

set::iterator it;

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

); if(it==s.end()) f[b[i].num]=1;

else

s.insert((ppp));

s.insert((ppp));

} else

);s.erase((ppp));

} }long long ans=0;

for(i=1;i<=n;i++)

ans+=sqr(c[i].r)*f[i];

printf("%lld",ans);

}

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個圓。已知這些圓兩兩沒有交點,即兩圓的關係只存在相離和包含。求這些圓的異或面 積並。異或面積並為 當一片區域在奇數個圓內則計算其面積,當一片區域在偶數個圓內...

BZOJ4561 JLoi2016 圓的異或並

傳送門 把圓拆成上下兩個圓弧,因為不存在相交關係,圓弧直接的上下關係是不變的。用set維護這些圓弧,插入的時候upper bound一下,如果找到的是上圓弧,就是我外面的第乙個圓,否則我外面的第乙個圓就是這個下圓弧外面的第乙個圓。achen include include include inclu...