其实 \(4, 5\) 操作都不重要,重要的是这个维护的思路。
考虑维护两个栈,插入的话就往前插就插入第一个栈,否则插入第二个栈,此时我们可以动态的维护一个 DP 数组,表示每个栈中的答案。
如果删除的话,我们就向指向的那一侧删除,如果一个栈删完了,我们就将剩余元素拿出来,暴力分成两半到两个栈里重构,可以证明最坏下时间复杂度是 \(O(n \log n)\) 的。
可能背包合并时需要一些手法。
其实 \(4, 5\) 操作都不重要,重要的是这个维护的思路。
考虑维护两个栈,插入的话就往前插就插入第一个栈,否则插入第二个栈,此时我们可以动态的维护一个 DP 数组,表示每个栈中的答案。
如果删除的话,我们就向指向的那一侧删除,如果一个栈删完了,我们就将剩余元素拿出来,暴力分成两半到两个栈里重构,可以证明最坏下时间复杂度是 \(O(n \log n)\) 的。
可能背包合并时需要一些手法。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/933700.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!