RT,我试图重载比较类
struct cmp {
bool operator()(int a, int b) const {
return ct[1][a] * ct[0][b] > ct[0][a] * ct[1][b];
}
}; priority_queue<int, vector<int>, cmp> pq;
但是这样会出现修改 ct[][] 后堆中顺序混乱的情况,你会喜提 AC 18, WA 56 。
正确方法:把 pair<double, int> 传进去,或者怕有精度问题可以传 pair<int, pair<ll, ll>> 。