考虑一个方点 u 对一个分割出的区间 [L + 1,R] 的贡献,令 v_i 为下挂的第 i 个圆点,就是 \binom{\sum{[v_i \in [L,R]]}}{2}。这里只用算在这个最小值上的贡献。
直观理解猜到答案关于 k 是凸的,具体证明可以考察上面的贡献函数。最外层显然套一个 wqs,再把分成 k 段转化为切 k - 1 刀,那么我们只要考虑有切刀代价时的最优 dp 即可,考虑在这个笛卡尔树上 dp。注意,这是一个双关键字的 dp,即要求在代价最小的前提下,切刀数最少,方便 wqs 判断。
还是从贡献函数上考虑,发现在 u 这个点的贡献只与其下挂圆点的划分方式有关,也就是说,我们不关心他的一个儿子的子区间内究竟切了多少刀、切在哪里,只关心是否切刀。这样就好设计 dp 了。
设 f_u 为 u 子树内的至少切一刀最小代价。这样显然也无法转移,再设 g_i 为 u 的前 i 个儿子的子树,第 i 棵内一定切一刀的最小代价,这样每个 g_i 加上后缀的代价贡献给 f_u。朴素的转移是枚举上一个吃刀的子树,计算之间的 u 下挂圆点的代价,并加上中间子树内不切的代价,前者直接在这一层前缀和算,后者可以预处理再前缀和。