圆弧并 uva 10969 && LA 2572
2015-02-26 02:17
295 查看
inline double ensure_angle(double v){while (v<-eps)v+=pi*2;return v;} Circle p[105]; int topmost(Point q,int t=0) { int ans=-1; for(int i=n-1;i>=t;i--)//下界必须为0,为了减少计算量会出错 { if((length(q-p[i].c)<p[i].r)) { ans=i; break; } } return ans; } int gcci(Circle c1,Circle c2,vector<d_ >&sol) { d_ d=length(c1.c-c2.c); if (dcmp(d)==0) { if (dcmp(c1.r-c2.r)==0) return -1; return 0; } if (dcmp(c1.r+c2.r-d)<0) return 0; if (dcmp(fabs(c1.r-c2.r)-d)>0) return 0; d_ a=angle(c2.c-c1.c); d_ da=acos((c1.r*c1.r+d*d-c2.r*c2.r)/(2*c1.r*d)); sol.pb(ensure_angle(a-da)); if (dcmp(da)==0) return 1; sol.pb(ensure_angle(a+da)); return 2; } set<int >re; vector<d_ > rad; void doit() { scanf("%d",&n);double ans=0; fr(i,0,n-1) scanf("%lf%lf%lf",&p[i].r,&p[i].c.x,&p[i].c.y); re.clear(); for (int i=0;i<n;i++) { rad.clear(); for (int j=0;j<n;j++)if (i!=j)//不能j=i+1 gcci(p[i],p[j],rad); rad.push_back(0); rad.push_back(pi*2); int sz=rad.size(); sort(rad.begin(), rad.end()); for(int j=0;j<sz-1;j++) { d_ mid=(rad[j]+rad[j+1])/2; int f=0; for(int d=-1;d<=1;d+=2) { d_ r2=p[i].r+eps*d; Point q=Point(p[i].c.x+r2*cos(mid),p[i].c.y+r2*sin(mid)); int t=topmost(q); if(t>=0) re.insert(t); if (t==i&&!f) {ans+=(rad[j+1]-rad[j])*p[i].r;f=1;} } } } //printf("%d\n",re.size()); printf("%.3lf\n",ans); }
相关文章推荐
- UVA 1267 && LA 3902 Network (思路--树上的DFS)
- UVA 1401 & LA 3942 (字典树Trie+递推)
- poj 1017 && uva 311 && la 5526
- UVA 1401 Remember the Word & LA 3942
- LA 2572 圆盘的相互覆盖问题,圆弧极角排序,中点代替圆弧,轻微扰动的影响判断
- 【treap tree】 HDOJ 3726 && LA 5031 && UVA 1479 Graph and Queries
- hdu 4081 && uva 1494 && LA 5713 Qin Shi Huang's National Road System
- poj 1873 && uva 811 && la 5211
- poj 1042 && uva 757 && la 5422
- UVA 1401 & LA 3942 Remember the Word 字典树+DP
- LA 3942 && UVa 1401 Remember the Word (Trie + DP)
- poj 1328 && uva 1193 && la 2519
- UVA 1473&LA 4986 - Dome of Circus
- UVa 10049 Self-describing Sequence (自描述序列&二分递推)
- UVaLive 6591 && Gym 100299L Bus (水题)
- UVA-1330 LA 3029 City Game(最大子矩阵)
- UVa 10815 Andy's First Dictionary
- Uva 11825 - Hackers' Crackdown 状态压缩
- uva 10831 - Gerg's Cake(勒让德符号)
- uva_11825_Hackers' Crackdown (狀態壓縮DP,好題)