GarsiaWachs
算法流程
1.找到满足 $q_{k-1} \lt q_{k+1}q$的最小下标 kk
2.找到满足$q_{j-1} \gt q_{k-1} + q_kq$的最大 $j \lt kj<k$
3.从列表中清除$q_{k-1}, q_kq$
4.在$q_{j-1}q$ 之后插入 $q_{k-1} + q_kq$
5.$q_{-1}$和$q_{n+1}$n+1可以用 \infty∞ 处理
代码
1 | #include<bits/stdc++.h> |
证明
本算法基于最优二叉树提出
1.找到满足 $q_{k-1} \lt q_{k+1}q$的最小下标 kk
2.找到满足$q_{j-1} \gt q_{k-1} + q_kq$的最大 $j \lt kj<k$
3.从列表中清除$q_{k-1}, q_kq$
4.在$q_{j-1}q$ 之后插入 $q_{k-1} + q_kq$
5.$q_{-1}$和$q_{n+1}$n+1可以用 \infty∞ 处理
1 | #include<bits/stdc++.h> |
本算法基于最优二叉树提出