[IOI2000][DP]邮局问题

在被noi题库中一道叫山区建小学[openjudge7624]的一道题虐无数次后见到了这道IOI的原题,不禁感慨我现在回到2000年兴许能进队呢= =|||
好,首先这道题一眼就知道是一个添加号类型DP。

所以我们自然而然的想到了下面的方程:

f[i][j] = min(f[k][j - 1] + dis[k + 1][i], f[i][j]);

  • 在这里,f[i][j]表示前i个城镇建j个邮局的最优解,k为断点位置

那么dis数组怎么求呢,我们有如下方程:

dis[i][j] = dis[i][j - 1] + a[j] - a[(i + j) / 2];

  • 在这里,dis[i][j]表示城镇i到j建立一个邮局的最优解,a为各个城镇坐标

那么解释一下为什么dis[i][j]可以由dis[i][j-1]求出:
1. 首先由贪心策略得,在一些城镇建立一个邮局只要选取最中间的那一个即为最优解,具体证明
2. 那么为什么可以由前一个状态推过来,首先我们考虑i到j-1的城镇中我们把邮局安放到了k这个位置,对于一个新加入的城镇j,我们会把位置从k挪到k+1,设 X = a[k+1] - a[k],那

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值