请注意求区间严格次小值的代码,本人使用结构体维护严格次小值的大小与位置,在重载 < 时出现错误:
原代码:
bool operator < (const maxx t) const {
return ( val ^ t.val ) ? val < t.val : idx < t.idx;
}
应改为:
bool operator < (const maxx t) const{
return ( val ^ t.val ) ? val < t.val : idx > t.idx;
}
因为需要维护的是值严格次小而位置最靠前的二元组 (i,vali) 所以应该写 >