CF814E An unavoidable detour for home

考虑有每个最短路只有一条.
那么我们建出最短路树后,显然所有的非树边都是同层之间的横叉边。
那么我们考虑设\(f(i,j,k,z)\)为我们考虑到了第\(i\)个点,此时他被我们分配到了\(p\)层,而\(p-1\)层作为完整的层,其总共有\(j\)条向下的边,而\(p\)层有\(k\)个向下一边的点,\(z\)个向下两边的点。

那么我们考虑
\(f(i,0,c1,c2)\)变为\(f(i,c1 + 2c2,0,0)\)即我们划分了一个新的层。
\(f(i,c1 + 2c2,0,0) = \frac{(c1 + 2c2)!}{2^c2}f(i,0,c1,c2)\)
那只需要考虑\(i\)\(i-1\)转移而来:
那么就需要枚举一下\(i\)和哪些点相连。
如果它不连:
则直接:
\(f(i,j-1,c1,c2) = f(i - 1,j,c1,c2)\)
如果它连一个
则有在\(c1 + c2\)个点里找一个点进行横叉边的链接:
连的是一个一度点:
\(f(i,j - 1,nc1 - 1,nc2) = c1f(i - 1,j,c1,c2)\)
连的是一个二度点:
\(f(i,j - 1,nc1 + 1,nc2 - 1) = c2f(i - 1,j,c1,c2)\)
如果它连了两个:
则如果它连的都是一度点:
\(f(i,j - 1,nc1 - 2,nc2) = \binom{c1}{2}f(i - 1,j,c1,c2)\)
则如果它连的都是二度点:
\(f(i,j - 1,nc1 + 2,nc2 - 2) = \binom{c2}{2}f(i - 1,j,c1,c2)\)
如果它连的一个是一度点,一个是二度点:
\(f(i,j - 1,nc1,nc2 - 1) = c1c2f(i - 1,j,c1,c2)\)

是一个很暴力的\(O(n^4)\)的做法。

posted @ 2021-09-30 16:14  fhq_treap  阅读(36)  评论(0编辑  收藏  举报