BZOJ2288:生日礼物题解

思路

其实这道题就是在求一个序列中最多\(M\)个(可相互重叠的)子序列的最大和。我们可以把序列中连续的正数和负数全部合并在一起:正数和正数合并,负数和负数合并。然后我把所有的正数全部加入答案之中,以他们的绝对值为关键字放入小根堆中,并且计个数,与此同时再创建双向链表结构。之后,我们可以以\(cnt>m\)作为循环条件,不停的取出队中的元素来进行处理。

Continue reading →