$Description$
某国有$n(n\leqslant 100)$座城市,由$m(m\leqslant 5000)$条单向道路相连。你希望从城市$1$运送$k(k\leqslant 100)$单位货物到城市$n$,这些道路并不安全,有很多强盗,所以你需要雇佣保镖来做护卫。每条道路都有一个危险系$a_i(a_i\leqslant 100),$如果你带着$x$个单位的货物通过,需要给保镖$a_i\times x^{2}$的佣金,保镖才会保证你的安全。每条道路都有一个限制,最多能运送$c_i(c_i\leqslant 5)$的货物。现在问,在能完成运送$x$个单位的货物到$n$号城市的情况下最小的花费,如果送不到,则输出$-1$。
$Solution$
很容易看出是费用流的做法,但是我们发现对于不同的流的大小,费用并不相同。由于题目给出$c_i\leqslant 5$,我们考虑拆边。
我们将每条边拆成$c_i$条边,分别标成$e_{i,1\sim c_{i,j}}$.
对于一条边$i$。
我们把$e_{i,1}$的费用设成$a_i\times 1=a_i\times (1^2-0^2)$
把$e_{i,2}$的费用设成$a_i\times 3=a_i\times (2^2-1^2)$
把$e_{i,3}$的费用设成$a_i\times 5=a_i\times (3^2-2^2)$
把$e_{i,4}$的费用设成$a_i\times 7=a_i\times (4^2-3^2)$
把$e_{i,5}$的费用设成$a_i\times 9=a_i\times (5^2-4^2)$
我们开始模拟边$i$的每种流量对应的费用,设$w_i~$为边$i$的费用。
假设流量为$0$,费用显然$=0$,符合题意
假设流量为$1$,费用显然$=w_{e_{i,1}}$
$\qquad\qquad\qquad\qquad\, =a_{i}\times 1$
$\qquad\qquad\qquad\qquad\, =a_{i}\times 1^2$
假设流量为$2$,费用显然$=w_{e_{i,1}}$$+w_{e_{i,2}}$
$\qquad\qquad\qquad\qquad\, =a_{i}\times 1+a_i\times 3$
$\qquad\qquad\qquad\qquad\, =a_{i}\times 2^2$
假设流量为$3$,费用显然$=w_{e_{i,1}}+w_{e_{i,2}}+w_{e_{i,3}}$
$\qquad\qquad\qquad\qquad\, =a_{i}\times 1+a_i\times 3+a_i\times 5$
$\qquad\qquad\qquad\qquad\, =a_{i}\times 3^2$
假设流量为$4$,费用显然$=w_{e_{i,1}}+w_{e_{i,2}}+w_{e_{i,3}}+w_{e_{i,4}}$
$\qquad\qquad\qquad\qquad\, =a_{i}\times 1+a_i\times 3+a_i\times 5+a_i\times 7$
$\qquad\qquad\qquad\qquad\, =a_{i}\times 4^2$
假设流量为$5$,费用显然$=w_{e_{i,1}}+w_{e_{i,2}}+w_{e_{i,3}}+w_{e_{i,4}}+w_{e_{i,5}}$
$\qquad\qquad\qquad\qquad\, =a_{i}\times 1+a_i\times 3+a_i\times 5+a_i\times 7+a_i\times 9$
$\qquad\qquad\qquad\qquad\, =a_{i}\times 5^2$
这样拆边显然是对的。然后源点$s$连点$1$,容量为$k$,费用为$0$,点$n$连汇点$t$,容量为$k$,费用为$0$,其他边进行拆边,最后跑最小费用最大流即可。
$Code$
1 |
|