zoukankan      html  css  js  c++  java
  • Atcoder ARC101 Ribbons on Tree

    题解:

    前面牛客网的那个比赛也有一道容斥+dp

    两道感觉都挺不错的

    比较容易想到的是

    f[i][j]表示枚举到了i点,子树中有j个未匹配

    这样的话我们需要枚举儿子中匹配状态

    这样是n^2的(这是个经典的看似n^3实际n^2)

    然后再枚举里面匹配了多少 再*n

    所以总复杂度n^3的

    计数问题考虑容斥

    也就是说 答案=至少有j条不符合的*(-1)^j

    这样我们依旧定义f[i][j]如上

    但是转移的时候

    我们对于这条边选和不选都可以的时候

    就不用管具体的匹配状态了

    所以不管的时候直接枚举子树转移

    另外是这条不匹配的情况

    那么就是f[i][0]=-f[i][k]*k个点自由匹配

    另外要注意这个容斥系数的问题

    k个点自有匹配就是(k-1)*(k-3)*(k-5)....(这个的考虑方法就是每个点肯定是要匹配的,所以每次先找一个点,再找另一个)

    代码:

  • 相关阅读:
    easyui datagrid fit 属性
    jQuery outerHeight() 方法
    从文件夹输入数据到控制台程序 c方式
    排序算法
    泛型算法
    string、char[]、char*、const char* 相互转换
    sizeof
    容器 forward_list
    sort
    printf & sprintf
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/9683434.html
Copyright © 2011-2022 走看看