设 fi 为在 i 号村庄建一个邮局的最小花费
fi=minj=1i−1{fj+∑k=j+1imin(ak−aj,ai−ak)}
由于 pos≤10000 所以直接预处理每个位置对应左边第一个的村庄,若要从 j 转移到 i ,就取 mid=2aj+ai ,则 ∀k≤posmid ,贡献是 ak−aj , ∀k>posmid ,贡献是 ai−ak
于是我用了一个前缀和 Si 存前 i 个村庄的距离和,即 ∑aj ,这样转移方程中右边的贡献就是
[(Sposmid−Sj)−(posmid−j)aj]+[(i−posmid)ai−(Si−Sposmid)]
可以 O(1) 计算,然后我又写了个决策单调性优化套上去
果断爆灵(
如果最后写 chk(r),write(dp[n]-r*p) ,不能过样例,但能拿30pts
如果写 chk(l),write(dp[n]-l*p) ,能过样例,但0pts
我怀疑是上述 DP 方法的问题,但是想不到问题在哪里,求助
code