bzoj4561 JLoi2016 圓的異或並

2022-03-01 18:02:25 字數 1327 閱讀 8300

hdu3511 變式 

層次為奇數的加,偶數的減

#include#include

#include

#include

#include

using

namespace

std;

#define n 200001

intline;

struct

line

e[n<<1

];int

lev[n];

bool equal(double a,double

b)struct

circle

}cir[n];

struct

node

node(

int id_,int

tag_) : id(id_),tag(tag_) {}

bool

operator

< (const node p) const

};set

s; bool

cmp(line p,line q)

intmain()

sort(e+1,e+m+1

,cmp);

for(int i=1;i<=m;++i)

s.insert(node(k,-1

)); }

else

}long

long ans=0

;

for(int i=0;ii)

if(lev[i]&1) ans+=1ll*cir[i].r*cir[i].r;

else ans-=1ll*cir[i].r*cir[i].r;

printf(

"%lld\n

",ans);

return0;

}

time limit: 30 sec  memory limit: 256 mb

submit: 923  solved: 369

[submit][status][discuss]

在平面直角座標系中給定n個圓。已知這些圓兩兩沒有交點,即兩圓的關係只存在相離和包含。求這些圓的異或面

積並。異或面積並為:當一片區域在奇數個圓內則計算其面積,當一片區域在偶數個圓內則不考慮。

第一行包含乙個正整數n,代表圓的個數。接下來n行,每行3個非負整數x,y,r,表示乙個圓心在(x,y),半徑為r的

圓。保證|x|,|y|,≤10^8,r>0,n<=200000

僅一行乙個整數,表示所有圓的異或面積並除以圓周率pi的結果。

2 0 0 1

0 0 2

3

BZOJ4561 JLoi2016 圓的異或並

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

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...