zoukankan      html  css  js  c++  java
  • zjoi2017 仙人掌

    题解:

    好难的dp啊。。。看题解看了好久才看懂

    http://blog.csdn.net/akak__ii/article/details/65935711

    如果一开始的图就不是仙人掌,答案显然为0,可以Tarjan判断。 
    环显然不能产生贡献,所以可以把环边都断开。 
    现在模型转化为,给定一棵树,用路径去覆盖树上的每一条边,且路径不能相交,求方案数。 
    设fifi表示做完了ii的子树,且没有路径可以向上扩展。 
    设gigi表示做完了ii的子树,且有路径可以向上扩展。 
    设hihi表示有ii个点,它们之间匹配的方案数。 
    记numnum为点xx的儿子个数,那么显然 
    
    hi=hi−1+hi−2×(i−1)
    hi=hi−1+hi−2×(i−1)
    
    fx=Πgson×hnum
    fx=Πgson×hnum
    
    gx=fx+Πgson×hnum−1×num
    gx=fx+Πgson×hnum−1×num
    
    简单解释一下: 
    hihi转移的时候考虑当前第ii个儿子的选择,如果这个儿子不匹配,那就有hi−1hi−1种方案,如果匹配,那就可以和前面i−1i−1个儿子中的一个匹配,方案是(i−1)×hi−2(i−1)×hi−2 
    fxfx的转移:每个儿子都必须要可以往上扩,且各个儿子之间相对独立所以是ΠgsonΠgson,然后一共有hnumhnum种儿子的匹配方案,所以乘起来就是所有可能的方案。 
    gxgx的转移:首先xx自己可以往上扩展,方案就是fxfx,然后xx还可以选择一个儿子,记这个儿子为yy,匹配方案为gygy,那么剩下的儿子有Πson!=y gson×hnum−1Πson!=y gson×hnum−1种方案,乘起来就是Πgson×hnum−1Πgson×hnum−1由于yy的取值有numnum种选择所以还要乘上numnum。
  • 相关阅读:
    微信公众号--JS-SDK
    微信公众号--网页授权
    微信公众号--资源请求
    微信公众号--相关资料
    微信公众号--消息回复
    一.小程序 --申请
    2017年总结
    SSM框架中常用的配置文件
    UML的9种图例解析
    23种设计模式汇总整理
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/8562866.html
Copyright © 2011-2022 走看看