「雅礼集训 2018 Day8」B
「雅礼集训 2018 Day8」B
Solution1
设到达一个点的时间为$T_u$,从这个点出去的时间为$T_u’$
那么显然满足$T_u\leq T_u’\leq T_u+t_u$,答案就是$\sum (t_u-(T’_u-T_u))\cdot c_u$
对于一条边满足$T_v\ge T’_u$,二分答案之后,容易发现这是一个线性规划问题
可以暴力单纯形解决掉(当然是水的,但是好像还挺快。。)
1 |
|
Solution2
二分答案$\text{lim}$,问题转化为求最小花费
设每个点减少了$x_i$
考虑限制有两种,一种是路径长度的限制,一种是每个点大小的限制
$\text{minimize:} \sum x_i\cdot c_i$
$\displaystyle \forall p\in paths , \sum x_{p_i}\ge \sum t_{p_i}-\text{lim}$
$-x_i\ge -t_i$
对偶一下,设对于路径$p$,$\sum x_{p_i}$的对偶变量为$y_p$,$-x_i$的对偶变量为$z_i$
$\text{maximize}:\sum y_p\cdot (\sum t_{p_i}-\text{lim})-z_i\cdot t_i$
$\displaystyle \forall i\in[1,n], \sum_{p\in paths,i\in p} y_p-z_i\leq c$
考虑对偶变量$y_p$和$z_i$有什么意义
此时,选择一条路径$y_p$,会使得 关于路径上的点的限制+1 , 使得答案增加$\sum t_{p_i}-\text{lim}$
$z_i$是关于每个单点的变量,可以用$t_i$代价使得每个$i$的限制-1
那么可以考虑转化为一个路径覆盖问题,选择一条路径覆盖路径上的点,且得到$\sum t_{p_i}-\text{lim}$的价值
限制式子转化为:每个点被覆盖次数大于$c$时,再选择就要付出$t_i$的代价令$z_i$加一
带权的路径覆盖容易转化为费用流模型,可以把每个点拆成入点出点,每个点被覆盖前$c_i$次,价值为$t_i$,之后就为0
因此每个点的入点向出点连$(c_i,t_i),(\infty,0)$两条边即可,路径的$\text{-lim}$可以在源点前加入
求一次最大费用可行流,最终得到的答案是原问题的最小代价
1 |
|