CF 62C
来源:互联网 发布:翻译见父自然知孝 编辑:程序博客网 时间:2024/05/20 03:45
给定一些三角形,求其周长并。。。
#include<stdio.h>#include<math.h>#include<iostream>#include<algorithm>#include<vector>using namespace std;#define eps 1e-8int sig(double x){return (x>eps)-(x<-eps);}struct P{ double x,y; P(double a=0,double b=0):x(a),y(b){} P operator +(const P &a)const{ return P(x+a.x,y+a.y); } P operator -(const P &a)const{ return P(x-a.x,y-a.y); } P operator *(const double a)const{ return P(x*a,y*a); } double operator *(const P &a)const{ return x*a.x+y*a.y; } double operator ^(const P &a)const{ return x*a.y-y*a.x; }};P p[220][3];double dis(P a,P b){ return sqrt((b-a)*(b-a));}int inpoly(P a,int k){ double ans=0; for(int i=0;i<3;i++) { P b=p[k][i],c=p[k][(i+1)%3]; ans+=fabs(((b-a)^(c-a))); } return sig(ans-fabs((p[k][2]-p[k][0])^(p[k][1]-p[k][0])))==0;}int main(){ int n; while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) for(int j=0;j<3;j++) scanf("%lf%lf",&p[i][j].x,&p[i][j].y); double ans=0; for(int i=0;i<n;i++) { for(int j=0;j<3;j++) { P A=p[i][j],B=p[i][(j+1)%3]; vector<double> v; v.push_back(0.0);v.push_back(1.0); for(int k1=0;k1<n;k1++) { for(int k2=0;k2<3;k2++) { P C=p[k1][k2],D=p[k1][(k2+1)%3]; double s1=((D-C)^(A-C)),s2=((D-C)^(B-C)); if(sig(s1)*sig(s2)<0) v.push_back(s1/(s1-s2)); } } sort(v.begin(),v.end()); int cnt=v.size(); for(int k1=0;k1<cnt-1;k1++) { double l=v[k1],r=v[k1+1]; double m=(l+r)/2.0; P mid=A+(B-A)*m; int flag=0; for(int k2=0;k2<n;k2++) { if(k2==i) continue; if(inpoly(mid,k2)) {flag=1;break;} } //printf("dis= %lf flag= %d %lf %lf\n",dis(A,B),flag,l,r); if(!flag) ans+=(r-l)*dis(A,B); } } } printf("%.10lf\n",ans); } return 0;}
0 0
- CF 62C
- CF 190C STL
- CF 79C. Beaver
- CF 229C Triangles
- CF 4 C
- cf 230c
- CF 255C
- CF 27C
- CF 52C
- CF 190C
- CF 191 div2 C
- CF 143 div2 C
- CF-div2-192-C
- cf 100 c(greedy)
- CF 188 (div2 C)
- cf-337C Quiz
- CF - 44C - Holidays
- CF 20C
- PendingIntent详解
- 自定义规则 Collections.sort() 对 List 排序
- C 语言程序设计实践 8.7 W.C之井然有序
- 怎么样快速得到一个数的相反数
- java控制台接收输入
- CF 62C
- STM32程序卡死在startup_stm32f10x_md.s里
- 二值图像区域增长
- u-boot-2014.10移植第25天----nand flash启动(三)
- 最大导出匹配数
- 电子工程师最关心的前途问题(转载)
- POJ - 1741(树分治,n较大的存权方法)
- C 语言程序设计实践 8.8 W.C之无聊的游戏
- java之TCP上传文件到服务器