1.声明
1.博主比较菜,只会二维。还只会OI常用的。
2.不要吐槽换行。
3.精度、圆周率:
1 const double eps=1E-16; 2 const double pi=acos(-1);
4.正确判相等:
1 inline bool equal(double x,double y) 2 { 3 return abs(x-y)<=eps; 4 }
2.模板
1.点类:
1 struct pt 2 { 3 double x,y; 4 pt(double a=0.double b=0)//构造函数 5 { 6 x=a,y=b; 7 } 8 void operator=(pt A)//赋值 9 { 10 x=A.x,y=A.y; 11 } 12 pt operator+(pt A)//向量加 13 { 14 return pt(x+A.x,y+A.y); 15 } 16 pt operator-(pt A)//向量减 17 { 18 return pt(x-A.x,y-A.y); 19 } 20 pt operator*(double d) 21 { 22 return pt(x*d,y*d); 23 } 24 pt operator/(double d) 25 { 26 return pt(x/d,y/d); 27 } 28 double operator*(pt A)//叉积 29 { 30 return x*A.y-y*A.x; 31 } 32 bool operator==(pt A)//是否相等 33 { 34 return equal(x,A.x)&&equal(y,A.y); 35 } 36 };
2.点类:
1 struct line 2 { 3 pt A,B; 4 line(pt x=pt(),pt y=pt()) 5 { 6 A=x,B=y; 7 } 8 };