多路合并题,明明是做过的题,却不会打,看了书才会原来的暴力做法。。。
解法好神仙呀。。
考虑一种设计状态、推状态的方式能做到
1.不重复不遗漏地推出所有状态
2.第k+1大的状态一定能从前k个状态中推出来
具体状态懒得写,看代码吧。。。
从树考虑,如果一个状态推出来的状态都比它小,那么从最大的状态开始推,就可以构成一棵树,那么答案就是包含根的一段联通块,这样便是合法的
考场上没什么时间了,想了一个贪心,却不知道怎么hack。。。
知道贪心怎么hack后就知道dp怎么写了
可以斜率优化,但要注意的是斜率是递减的,所以要用单调栈维护,每次取栈顶作为决策
原文:https://www.cnblogs.com/lzqlalala/p/11697381.html