QOJ4795 Taxi

题意简述

给定一颗 \(n\) 个点的树,边有边权。有 \(m\) 个独立的乘客和 \(m\) 个独立的司机,每个人选一个节点。将乘客与司机匹配,使得距离之和最大。

求所有 \(n^{2m}\) 种可能情况的距离之和 \(\bmod 10^9+7\)

\(1\le n,m\le 2500\)

题解

考虑一条边的两个端点对应的子树,记其中一半包含 \(a\) 个乘客和 \(b\) 个司机,则这条边最多被算 \(\min(a,m-b)+\min(b,m-a)\) 次,考虑取到这个上界。

将乘客视为源点,司机视为汇点,即需要证明每个点流量平衡。若一个点有 \(A\) 个乘客,\(B\) 个司机,与其相连的所有子树集合为 \(S\),记 \(a_x,b_x\) 为子树 \(x\) 中乘客、司机的数量,则

\[\begin{aligned} &(A+\sum_{x\in S}\min(a_x,m-b_x))-(B+\sum_{x\in S}\min(b_x,m-a_x))\\ =&(A+\sum_{x\in S}\min(a_x+b_x,m)-b_x)-(B+\sum_{x\in S}\min(a_x+b_x,m)-a_x)\\ =&(A+\sum_{x\in S}a_x)-(B+\sum_{x\in S}b_x)\\ =&0 \end{aligned} \]

发现 \(\min(a,m-b)+\min(b,m-a)=\min\{a+b,2m-a-b,m\}\),于是直接 \(\mathcal O(nm)\) dp 就做完了。

posted @ 2025-11-06 21:13  zifanwang  阅读(4)  评论(0)    收藏  举报