zoukankan      html  css  js  c++  java
  • 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) = inom{c1}{2}f(i - 1,j,c1,c2))
    则如果它连的都是二度点:
    (f(i,j - 1,nc1 + 2,nc2 - 2) = inom{c2}{2}f(i - 1,j,c1,c2))
    如果它连的一个是一度点,一个是二度点:
    (f(i,j - 1,nc1,nc2 - 1) = c1c2f(i - 1,j,c1,c2))

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

  • 相关阅读:
    python之安卓逆向HOOK系统通用类
    MySQL 排名、分组后组内排名、取各组的前几名
    MySQL case
    MySQL 行列相互转换
    MySQL学习笔记(四)
    回归分析
    构建决策树
    用K-Means聚类分析做客户分群
    会员数据化运营
    数据降维——主成分分析、因子分析、线性判别分析
  • 原文地址:https://www.cnblogs.com/dixiao/p/15357269.html
Copyright © 2011-2022 走看看