传送门
思路:
开始想没什么思路,想到的是贪心,就是能一起走的肯定要尽量一起走
所以我就将猫玩耍的时间 \(t_i\) 减去路程的长度 \(\sum_{k=2}^i d_k\) ,令结果为 \(a\),这样当他们的 \(a\) 值相同时,就表示可以一起走
然后我们会发现,对于某一些猫,如果他们要一起走,那么等待的时间就是 \(\sum Max - a_i\) ,这里 \(Max\) 为这群猫 \(a_i\) 的最大值
这样我们就将问题转化成将 \(a_i\) 排序,然后将他们分成 \(p\) 段,设每段范围为 \([l_k,r_k]\),求 \(\sum_{k=1}^p \sum_{i=l_k}^{r_k} Max_k - a[i]\) 的最小值
状态转移方程为:
\[dp[i][k]=dp[j][k-1]+(i-j)\times a_i-(sum_i-sum_j)
\]
其中 \(sum_i=\sum_{k=1}^i a_k\)
这样我们就可以用斜率优化 \(O(np)\) 解决
代码:
#include
#include
#include
#include
#include
#include
#include
#include