struct Cow
{
int i, j, k;
ll val() const
{
return a[i] * b[j] + b[j] * c[k] + c[k] * a[i];
}
bool operator< (const Cow &u) const
{
return this -> val() < u.val();
}
};
set<Cow> s;
这时候你会发现自己的set变得不一样了
因为set判断相等是使用如果a > b 并且 a < b 都不成立才相等,重载了<规则,显然判断相等会不对
这个时候可以修正重载(较为麻烦),或者直接array<int, 3>
即可