LINK:CF321E Ciel and Gondolas
很少遇到这么有意思的题目了。虽然很套路。。
容易想到dp \(f_{i,j}\)表示前i段分了j段的最小值 转移需要维护一个\(cost(i,j)\)
暴力显然不太行 不过暴力枚举决策的话 可以预处理前缀和线性推出。
显然想要优化决策的话第一步就需要O(1)求出\(cost(i,j)\)
经过画图 可以发现预处理出\(g[i][j]\)表示从\((1,1)\)到\((i,j)\)这个矩形中的点值和 和 \(sum_i\)表示\((1,1)\)到\((i,i)\)的点值和 就可以O(1)求值了。
观察dp转移式发现这是典型的四边形不等式优化dp 套用决策单调性 复杂度\(n\cdot k\cdot logn\)
强制k段 显然可以Wqs二分来解除限制 不过这样不太能分治做了 需要采用单调队列来做。
但存在一个问题 可能有mid的时候为k-1 mid+1的时候为k+1.
关于这个问题 通过值相等的时候分段多的方法来使上面情况合法化 最终尽管可能>=k的但是仍然可以构造出等于k的情况。
如果是小数二分的话显然不必要 因为可以精确到固定的点。
所以总复杂度\(n\cdot logMx \cdot logn\)
code
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include