• 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))的做法。

  • 相关阅读:
    go学习笔记day19
    Mac11系统 SIP保护 如何在根目录创建data文件夹
    vue首页加载文件过多,去掉预加载
    NPM更换国内源
    autoCAD2007 图层
    读《现代JavaScript》笔记①——Map and Set(映射和集合)
    pubsubjs发布订阅
    vuecli中配置less并使用全局变量
    React组件通讯
    v6版reactrouterdom的改变
  • 原文地址:https://www.cnblogs.com/dixiao/p/15357269.html
Copyright © 2020-2023  润新知