Loading

【11.16T1 公路】 --时间复杂度的计算技巧

给定 \(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})\),可以通过此题

posted @ 2024-11-16 18:06  慕斯ひいきする  阅读(27)  评论(0)    收藏  举报