限时每日一题day25。思路想得比较快,也是正确的。
对于某个列表,能取其中元素的一个必要条件是:取第一波正数前缀和时,前面所有的负数前缀和的最小值 \(>=nowx\) 即可。这样才能保证能够取到这个正数前缀和。
那么对于所有列表,贪心地取所有负数前缀和最小值中最大的那个,一定是最优的取法。直接用优先队列动态维护取的过程即可。具体细节见代码。
code