首页 > 其他 > 详细

usaco Cow Pedigrees

时间:2019-10-14 22:35:58      阅读:83      评论:0      收藏:0      [点我收藏+]

题意

有n个节点二叉树,每个节点有0\2个儿子,给定最大深度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\n",(f[n][k]-f[n][k-1]+mod)%mod);
}
View Code

 

usaco Cow Pedigrees

原文:https://www.cnblogs.com/znsbc-13/p/11674380.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!