• usaco Cow Pedigrees


    题意

    有n个节点二叉树,每个节点有02个儿子,给定最大深度k,求方案数%9901

    n<=500

    题解

    $dp$定义很

    $f[i][j]$表示i个节点组成至多j层方案数

    考虑答案

    $f[n][k]$表示包含$1-k$所有层数方案数

    $f[n][k-1]$表示包含$1-(k-1)$所有层数方案数

    于是$f[n][k]-f[n][k-1]$就是答案

    转移就是枚举除了根节点分给两个子树多少个

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define mod 9901
    ll f[520][520];
    ll n,k;
    int main(){
        scanf("%lld%lld",&n,&k);
        for(ll i=1;i<=k;i++)
            f[1][i]=1;
        for(ll i=1;i<=k;i++)
            for(ll j=3;j<=n;j+=2)
                for(ll q=1;q<j;q+=2)
                    (f[j][i]+=(f[j-q-1][i-1]*f[q][i-1])%mod)%=mod;
        printf("%lld
    ",(f[n][k]-f[n][k-1]+mod)%mod);
    }
    View Code
  • 相关阅读:
    sql总结
    2018年6月10日笔记
    Docker入门之zabbix-agent篇
    2018年6月7日笔记
    2018年6月5日笔记
    Docker入门之container篇
    Docker入门之image篇
    Docker 入门
    2018年5月31日笔记
    2018年5月29日笔记
  • 原文地址:https://www.cnblogs.com/znsbc-13/p/11674380.html
Copyright © 2020-2023  润新知