好吧,我一开始说这是个神级数据结构毒瘤题,后来改成神题了. 主要是贪心做法的巧妙转化: 首先发现选择的一对必须相邻,于是我们搞出差分. 然后考虑选取最小值时,最小值两侧的数要么同时选,要么都不选. 然后考虑把这三个数合起来变成sum[l] + sum[r] - sum[mid] 这样递归下去即可. 仔细思考,实在是巧妙至极啊!!! 关于代码实现:书上说要在堆和链表上建立映射关系,我觉得十分的毒瘤,打了135行结果五彩斑斓...... 然后我决定放弃,不调了,采用神奇的:延迟删除法!就是取堆顶的时…