Japan Alumni Group Summer Camp 2018 Day 2 D - Knapsack And Queries

考虑每次维护两个栈的背包。

每次删除元素在左边的栈中出栈
每次加入元素在右边的栈背包中入栈

image

当左栈空时考虑重构。

分析一下复杂度,考虑势能变化:\(H = (siz_r - siz_l)\)

每次加入一个元素用 \(O(mod)\) 使得 \(H +/- 1\),一次重构 \(O(Hmod)\)\(H \to 0\)

考虑总变化量正比于\(Q\),则复杂度为\(O(Qmod)\).

posted @ 2022-04-06 23:51  fhq_treap  阅读(50)  评论(0编辑  收藏  举报