给定 \(n\) 个点 \(m\) 条边的无向简单连通图,每条边有颜色 \(c_i\) ,当第 \(k\) 次经过颜色为 \(j\) 的边时,需要花费 \(k\cdot x_j\) 的代价。求在经过边数最小的情况下,\(1\) 到各个点的最短路
\(n\le 50,m\le \binom{n}{2}, x_i\le 10^4\)
做法是简单的,直接处理出最短路 \(DAG\) (即通过最短路的关键路径将图分层),然后 \(DFS\) 暴搜
这里简单讲一下证明:
设有 \(t_i\) 个点的最短路 \(dis_u = i\),显然有 \(\sum\limits_{i=0}^{n}t_i=n\)
接着发现因为图分层,方案数即为 \(\prod\limits_{i=0}^{d}t_i\cdot t_{i+1}\)
也就是将 \(n\) 分配成若干组,方案数即为每组大小乘积。那么最劣情况下,分为 \(2,2,2\dots2\),或 \(3,3,3\dots,3\) 之类的。
那么时间复杂度为 \(O(\max\{ 2^{\frac n2},3^{\frac n3},\dots \})\)
不难发现本题 \(n\) 取 \(50\),时间复杂度为 \(O(3^{\frac n3})\),可以通过此题
标签:le,frac,11.16,复杂度,T1,n3,短路 From: https://www.cnblogs.com/sukiqwq/p/18549634