日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > bzoj4561【JLOI2016】圓的異或并

bzoj4561【JLOI2016】圓的異或并

來源:程序員人生   發(fā)布時間:2016-08-22 09:24:04 閱讀次數(shù):2500次

4561: [JLoi2016]圓的異或并

Time Limit: 30 Sec  Memory Limit: 256 MB
Submit: 171  Solved: 70
[Submit][Status][Discuss]

Description

在平面直角坐標(biāo)系中給定N個圓。已知這些圓兩兩沒有交點,即兩圓的關(guān)系只存在相離和包括。求這些圓的異或面

積并。異或面積并為:當(dāng)1片區(qū)域在奇數(shù)個圓內(nèi)則計算其面積,當(dāng)1片區(qū)域在偶數(shù)個圓內(nèi)則不斟酌。

Input

 第1行包括1個正整數(shù)N,代表圓的個數(shù)。接下來N行,每行3個非負(fù)整數(shù)x,y,r,表示1個圓心在(x,y),半徑為r的

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

Output

 僅1行1個整數(shù),表示所有圓的異或面積并除以圓周率Pi的結(jié)果。

Sample Input

2
0 0 1
0 0 2

Sample Output

3



掃描線算法

圓之間的包括關(guān)系構(gòu)成1個樹形結(jié)構(gòu),這棵樹上奇數(shù)層圓的面積和減去偶數(shù)層圓的面積和即為答案。

求圓之間的包括關(guān)系是1個很經(jīng)典的掃描線模型,詳見我的hdu5299題解。




#include<iostream> #include<cmath> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<set> #define F(i,j,n) for(int i=j;i<=n;i++) #define D(i,j,n) for(int i=j;i>=n;i--) #define ll long long #define N 200005 using namespace std; int n,tmp,cnt,head[N],d[N],fa[N]; ll ans; struct edge{int next,to;}e[N]; struct cir{ll x,y,r;}a[N]; struct data{int x,f,id;}q[N*2]; inline double gety(int id,int x,int opt) { return a[id].y+opt*sqrt(a[id].r*a[id].r-(a[id].x-x)*(a[id].x-x)); } struct pos { int id,opt; pos(int a=0,int b=0){id=a;opt=b;} friend bool operator <(pos a,pos b) { if (a.id==b.id) return a.opt<b.opt; else return gety(a.id,tmp,a.opt)<gety(b.id,tmp,b.opt); } }; set<pos> s; set<pos>::iterator it; inline int read() { int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if (ch=='-') f=⑴;ch=getchar();} while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } inline bool cmp(data a,data b){return a.x==b.x?a.f<b.f:a.x<b.x;} inline void add_edge(int x,int y) { e[++cnt]=(edge){head[x],y};head[x]=cnt; fa[y]=x; } void dfs(int x) { ll area=a[x].r*a[x].r; if (d[x]&1) ans+=area;else ans-=area; for(int i=head[x];i;i=e[i].next) d[e[i].to]=d[x]+1,dfs(e[i].to); } int main() { n=read(); F(i,1,n) { a[i].x=read();a[i].y=read();a[i].r=read(); q[2*i⑴]=(data){a[i].x-a[i].r,1,i}; q[2*i]=(data){a[i].x+a[i].r,⑴,i}; } sort(q+1,q+2*n+1,cmp); F(i,1,2*n) { if (q[i].f==1) { tmp=q[i].x; it=s.lower_bound(pos(q[i].id,1)); if (it!=s.end()) { if (it->opt==1) add_edge(it->id,q[i].id); else add_edge(fa[it->id],q[i].id); } else add_edge(0,q[i].id); s.insert(pos(q[i].id,1));s.insert(pos(q[i].id,⑴)); } else s.erase(pos(q[i].id,1)),s.erase(pos(q[i].id,⑴)); } dfs(0); printf("%lld\n",ans); return 0; }


生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 久久精品1| 丰满少妇久久久久久久 | 日韩欧美综合 | 久久久精品日韩 | 国产毛片久久久久 | 国产成人欧美一区二区三区八 | 久久99精品久久久久久久久久久久 | 久久午夜视频 | 午夜视频在线免费观看 | 久久久国产一区二区三区 | 亚洲午夜在线观看 | 精品伦精品一区二区三区视频 | 免费av在线播放 | 成人爽a毛片一区二区免费 精品麻豆 | 久久久久国内精品 | 91欧美一区二区三区综合在线 | 黄色一级片在线免费观看 | 国产视频二区 | 国产一区二区视频免费观看 | 久久久噜噜噜久久中文字幕色伊伊 | 91精品国产乱码久久久久久 | 在线看国产 | 久久久精品免费观看 | 国产精品久久久久久久久久98 | 成人av中文字幕 | 日本一区二区三区免费观看 | 国产成人一区二区 | 99久久99久国产黄毛片 | 黄色免费看网站 | 噜噜社 | 国产真乱mangent | 人成在线 | 欧美激情视频在线观看 | 男女av网站 | 一二三区在线 | 直接看av的网站 | 国产不卡一二三 | 精品国产乱码久久久久久丨区2区 | 欧美91 | 波多野结衣精品视频 | 色肉色伦交av色肉色伦 |