首先考虑一个结论 : 在所有奶酪能被吃的时间相等的情况下,设他们能吃的时间是 time , 我们把老鼠按速度 v 从大到小排序,奶酪从大到小按 p 排序,那么这些老鼠可以按照题目要求吃掉这些奶酪,当且仅当 \forall i , time (\sum_{j=1} ^i v_j) \geq \sum_{j=1}^i p_j 。
考虑如果这个结论成立,我们该怎么建图, 先把 v 按从大到小排序。
\sum_{j=1}^i v_j=\sum_{j=1}^i \sum_{k=j}^i(v_k-v_{k+1}) = \sum_{k=1}^i (v_k - v_{k+1}) \times k
我们把一个点的意义设置为 v_k-v_{k+1} ,从这个点向每个奶酪连 (v_k-v_{k+1}) \times time ,原点向第 k 个点连 k \times (v_k-v_{k+1}) \times time 。
此时,考虑一种不满足上述结论的奶酪,假设前 t 的时候他不满足,那么在这 t 个的时候,所有点向这前 t 个点的集合连的总流量是 \sum_{i=1}^n (v_{i}-v_{i+1}) \times \min(i,t)=\sum_{i=1}^t v_i ,满足我们的需求。