题目链接:E题
本蒟蒻在这道题中使用了重载运算符和 STL 来实现堆,但是由于优先队列不可随时删除,所以蒟蒻自己实现的时候使用了 set 。
但是我的一名同学在学习我的题解的时候用了和我一样的重载运算符,却使用因优先队列而 TLE 了,但换成 set 就过了。
在这里询问一下各位大佬原因:是因为重载运算符没有满足严格弱序导致的问题还是另有原因。
谢谢!
bool operator < (const Data a,const Data b)
{
int aa=(a.x+a.y>=0);
int bb=(b.x+b.y>=0);
if(aa!=bb) return aa<bb;
if(aa) return a.x<b.x;
return a.y<b.y;
}