
DP优化
Lynstery
一只蒟蒻
展开
-
[DP] BZOJ1003: [ZJOI2006]物流运输
题意给出一个m个的无向图,你需要规划n天的运输方案。n天里,每天都要从S走到T走一次,每个点在某些天里不能经过。每天需要花费等于路径长度的代价,而且如果第i天选择的路径与第i-1天不同(i>1),还需要多花K的修改路线代价。求最小总代价。 (n<=100,m<=20)题解脑洞题,不算太难。可能一开始会想的比较远,如果考虑路径的变化,发现难以下手。实际上是个简单的线性DP。设f[i]表示前i天花费的原创 2017-02-11 21:58:19 · 445 阅读 · 0 评论 -
[斜率优化DP] BZOJ1096: [ZJOI2007]仓库建设
题意有N个工厂按编号顺序排成一条直线,第1个工厂到第i个工厂的距离为dis[i], 第i个工厂一开始堆积着p[i]个货物,现在要紧急把所有货物装进仓库里。在第i个工厂建仓库需要c[i]的代价,对于没有建立仓库的工厂,其货物应被运往其他的仓库进行储藏,且只能往编号大仓库的运,一件货物运送1个单位距离的代价是1。求把所有货物装进仓库的最小代价。 (n<=100000)题解显然是DP,要用到斜率优化。原创 2017-02-12 11:03:54 · 677 阅读 · 0 评论 -
CDQ分治与斜率优化DP——学习笔记
我们知道当斜率优化DP中的点的x坐标不单调时,需要splay来维护凸壳,但是代码量比较大,容易写挂。 我们还有一种神奇的做法:CDQ分治。 先把n个状态排成一个序列。考虑一个分治过程solve(L,R),每次分成[L,mid],[mid+1,R]两部分。 显然对于fi只和1~i-1有关,所以我们solve(L,mid)递归求解,即可得到[L,mid]的所有f值。 现在我们需要考虑用[L,mi原创 2017-02-17 12:03:08 · 1601 阅读 · 0 评论 -
[SET维护DP] Codeforces #875E. Delivery Club
好题。首先不难想到二分答案。验证就是写出状态 n2n^2 的 DPDP,类似 二取一维数组 的搞法: fi,jf_{i,j} 表示前 ii 个点已走过,两个人分别在 ii 和 j, (i>j)j,\ (i>j) 。 fi,j→fi+1,j(ai+1−aj≤mid),fi,j→fi+1,i(ai+1−ai≤mid)f_{i,j} \rightarrow f_{i+1,j}(a_{i+1}-a_{j原创 2017-10-20 12:13:09 · 370 阅读 · 0 评论