Japan Alumni Group Summer Camp 2018 Day 2 D - Knapsack And Queries
考虑每次维护两个栈的背包。
每次删除元素在左边的栈中出栈
每次加入元素在右边的栈背包中入栈
当左栈空时考虑重构。
分析一下复杂度,考虑势能变化:\(H = (siz_r - siz_l)\)
每次加入一个元素用 \(O(mod)\) 使得 \(H +/- 1\),一次重构 \(O(Hmod)\) 让 \(H \to 0\)。
考虑总变化量正比于\(Q\),则复杂度为\(O(Qmod)\).