CF2055E - Haystacks
神奇的贪心题目——对于贪心的总结
记录一下自己的狗屎思路:
考虑固定了遍历顺序的前提下,怎么操作是最优的?
对于每个栈,把栈的元素尽量放入到已经清空过的栈内,放不完的全部丢到最后一个栈里
考虑怎么模拟这个过程:
维护已经清空的栈的空间 \(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\}
\]

浙公网安备 33010602011771号