在按极角排序向量时,一开始是这样重载的 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