在按极角排序向量时,一开始是这样重载的 operator<
(删去了一些无影响的关键字):
struct vector {
double angle() const { return atan2(y, x); }
friend bool operator<(vector p, vector q)
{ return p.angle() < q.angle(); }
};
这样会 RE on test 20。在运算符重载时考虑 eps 即可 AC。
考虑到 vector::angle()
的返回值应该始终不变,这个运算符重载应该相当于对 double[]
排序,为什么不考虑 eps 会挂啊 QAQ