不是妹子,萌新求助凸优化
查看原帖
不是妹子,萌新求助凸优化
369704
SUITLIE楼主2022/5/14 10:24

设 fif_i 为在 ii 号村庄建一个邮局的最小花费 fi=minj=1i−1{fj+∑k=j+1imin(ak−aj,ai−ak)}f_i=min_{j=1}^{i-1}\{f_j+\sum_{k=j+1}^{i}min(a_k-a_j,a_i-a_k)\}

由于 pos≤10000pos \le 10000 所以直接预处理每个位置对应左边第一个的村庄,若要从 jj 转移到 ii ,就取 mid=aj+ai2mid=\frac{a_j+a_i}{2} ,则 ∀k≤posmid\forall k\le pos_{mid} ,贡献是 ak−aja_k-a_j , ∀k>posmid\forall k\gt pos_{mid} ,贡献是 ai−aka_i-a_k
于是我用了一个前缀和 SiS_i 存前 ii 个村庄的距离和,即 ∑aj\sum{a_j} ,这样转移方程中右边的贡献就是
[(Sposmid−Sj)−(posmid−j)aj]+[(i−posmid)ai−(Si−Sposmid)][(S_{pos_{mid}}-S_j)-(pos_{mid}-j)a_j]+[(i-pos_{mid})a_i-(S_i-S_{pos_{mid}})]

可以 O(1)O(1) 计算,然后我又写了个决策单调性优化套上去

果断爆灵(

如果最后写 chk(r),write(dp[n]-r*p) ,不能过样例,但能拿30pts
如果写 chk(l),write(dp[n]-l*p) ,能过样例,但0pts
我怀疑是上述 DP\text{DP} 方法的问题,但是想不到问题在哪里,求助

code

2022/5/14 10:24
加载中...