「雅礼集训 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 |
|