Codeforces 1C Ancient Berland Circus 计算几何
2013-08-19 00:07
162 查看
#include <iostream> #include <cmath> #include <iomanip> using namespace std; #define PI acos(-1.0) #define feq(a,b) (fabs(a-b)<1E-4) double gcd(double a,double b) { if(feq(a,0)) return b; if(feq(b,0)) return a; return gcd(b,fmod(a,b)); } inline double bcos( double a, double b, double c ) { return acos((b*b+c*c-a*a)/(2.0*b*c)); } inline double len(double x1,double y1,double x2,double y2) { return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } int main() { double x1,y1,x2,y2,x3,y3; cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3; double a=len(x1,y1,x2,y2); double b=len(x1,y1,x3,y3); double c=len(x2,y2,x3,y3); double p=0.5*(a+b+c); double s_triangle=sqrt(p*(p-a)*(p-b)*(p-c)); double r=(a*b*c)/(4.0*s_triangle); double A=bcos(a,r,r); double B=bcos(b,r,r); double C=2*PI-A-B; double T=gcd(A,gcd(B,C)); double s; s=0.5*r*r*sin(T)*(2*PI/T); //这里wa了好几次,因为把2*PI/T用double类型保存了再算的,倒置关键精度丢失 cout.setf(ios::fixed); cout << setprecision(8) << s << endl; return 0; }
相关文章推荐
- Codeforces 1C. Ancient Berland Circus(计算几何:正多边形性质+高精度)
- Codeforces 682E 计算几何
- #51 Codeforces-E. Very simple problem (计算几何)(点被多少个三角形包含)
- codeforces 849B Tell Your World(计算几何)
- Codeforces 8D Two Friends 三分+二分+计算几何
- codeforces 223E 计算几何 图论 网络流思想
- CodeForces - 1C:Ancient Berland Circus (几何)
- CodeForces 682 E.Alyona and Triangles(计算几何)
- CodeForces 682E Alyona and Triangles (计算几何)
- Codeforces 849B - Tell Your World 【计算几何+思维】
- Codeforces 851C . Five Dimensional Points 计算几何,结论
- Codeforces 32E Hide-and-Seek 求2点关于镜面反射 计算几何
- CodeForces - 231D (计算几何. 水题)
- CodeForces 281c Rectangle Puzzle 计算几何
- 1.13 Codeforces 30D Kings Problem 贪心 计算几何
- CodeForces 1C(计算几何)
- Codeforces 703C 思维or计算几何
- CodeForces - 801D Volatile Kite (计算几何)
- Codeforces 140 A. New Year Table(计算几何)
- Codeforces 560C Gerald's Hexagon【计算几何】