摘要:首先我们需要排个序,如果排序之后相邻两项差超过1就是无解。统计一下每个数出现的次数num[i]。 然后我们很容易发现,一个完美序列,去掉所有权值大于某个值的数之后,还是完美的。 这样我们就考虑一路dp过去,将每一种数插进去。然后发现,当前数的决策之和上一个数有关。我们插的位置实际上只有两种可能:两边 阅读全文
posted @ 2017-05-29 20:37 OldJang 阅读 (375) 评论 (0) 编辑
摘要:考虑每个值作为最大值的区间实际上可以用单调栈求出来,即找到左边第一个比它大的数l[i],右边第一个比它大的r[i],那就是左端点在[l[i],i]右端点在[i,r[i]]的区间是以第i个数作为最大值。 这样的话可以看成二维平面上一个矩形区域,每个矩形区域有着一样的最大值,如果我们把最大值相同的矩形放 阅读全文
posted @ 2017-05-29 20:22 OldJang 阅读 (301) 评论 (0) 编辑