神奇的贪心题目——对于贪心的总结 记录一下自己的狗屎思路: 考虑固定了遍历顺序的前提下,怎么操作是最优的? 对于每个栈,把栈的元素尽量放入到已经清空过的栈内,放不完的全部丢到最后一个栈里 考虑怎么模拟这个过程: 维护已经清空的栈的空间 $x$ ,每遍历一个 $i$ 考虑进行如下操作:
$$ans+=\min(x,a_i)$$$$x+=b_i-a_i$$$$x=\max(0,x)$$然后答案就是 $2\sum a_i-ans$ 然后其实不难发现这个过程十分的繁琐,是没办法分析的,我们需要有一个很优美而简洁的式子来描述这个过程 所以考虑手玩一下这个过程,然后发现答案实际上就是:
$$ans=\sum a_i - \max_{i\le n}\{\sum_{j\le i}a_j-\sum_{j<i}b_j\}$$