博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1472 奶牛家谱 Cow Pedigrees
阅读量:5114 次
发布时间:2019-06-13

本文共 1628 字,大约阅读时间需要 5 分钟。

 P1472 奶牛家谱 Cow Pedigrees

    • 102通过
    • 193提交
  • 题目提供者该用户不存在
  • 标签USACO
  • 难度普及+/提高

 提交  讨论  题解  

最新讨论

  • 暂时没有讨论

题目描述

农民约翰准备购买一群新奶牛。 在这个新的奶牛群中, 每一个母亲奶牛都生两个小奶牛。这些奶牛间的关系可以用二叉树来表示。这些二叉树总共有N个节点(3 <= N < 200)。这些二叉树有如下性质:

每一个节点的度是0或2。度是这个节点的孩子的数目。

树的高度等于K(1 < K < 100)。高度是从根到最远的那个叶子所需要经过的结点数; 叶子是指没有孩子的节点。

有多少不同的家谱结构? 如果一个家谱的树结构不同于另一个的, 那么这两个家谱就是不同的。输出可能的家谱树的个数除以9901的余数。

输入输出格式

输入格式:

 

两个空格分开的整数, N和K。

 

输出格式:

 

一个整数,表示可能的家谱树的个数除以9901的余数。

 

输入输出样例

输入样例#1:
5 3
输出样例#1:
2

说明

翻译来自NOCOW

USACO 2.3

分析:很显然求方案数选择dp,关键是怎么dp呢?可以从题目中得知影响结果的只有节点数和高度了,那么设f[i][j]为高度为i,节点数为j的二叉树的个数,怎么转移呢?很显然是从它的左右子树上转移过来的,二叉树的方案数=左子树的方案数*右子树的方案数,对于节点的个数,左子树+右子树的和是一定的,所以我们枚举一个子树的节点个数那么另一个子树的节点个数就出来了,如果要构成高度为i的二叉树,那么左右子树中至少要有一个高度为i-1的,那么就要分3中情况讨论,一个是i-1,一个比i-1小;两个都是i-1,将3种情况的方案数加起来就可以了.那么怎么求比i-1小的方案数呢?可以类比noip2015子串,利用前缀和原理,比i-1小就是把比i-2小的加上i-1的即可,这个操作可以在推算f数组的时候进行.

#include 
#include
#include
#include
using namespace std;const int mod = 9901;int f[110][210],n,k,t[110][210];int main(){ scanf("%d%d", &n, &k); f[1][1] = 1; for (int i = 2; i <= k; i++) for (int j = 1; j <= n; j++) { for (int p = 1; p < j; p++) { f[i][j] = (f[i][j] + t[i - 2][p] * f[i - 1][j - p - 1]) % mod; f[i][j] = (f[i][j] + t[i - 2][j - p - 1] * f[i - 1][p]) % mod; f[i][j] = (f[i][j] + f[i - 1][p] * f[i - 1][j - p - 1]) % mod; } t[i - 1][j] = (t[i - 2][j] + f[i - 1][j]) % mod; } printf("%d\n", f[k][n]); return 0;}

 

转载于:https://www.cnblogs.com/zbtrs/p/5931199.html

你可能感兴趣的文章
转,Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
查看>>
C#编译成x86与x64区别
查看>>
web基础,用html元素制作web页面
查看>>
nohup和&的区别
查看>>
如何在Mininet中修改host的IP地址
查看>>
深入理解pthread_cond_wait、pthread_cond_signal
查看>>
2017 让机器给我们干活
查看>>
django(权限、认证)系统——用户Login,Logout
查看>>
前端的常见的面试试题
查看>>
模版方法模式
查看>>
Python学习——复习5次课(12月2日)
查看>>
[其他]Ubuntu安装genymotion后unable to load VirtualBox engine
查看>>
微信小程序遇到的那些坑
查看>>
水瓶座的回顾-高贵的程序员
查看>>
整理自己的.net工具库
查看>>
java 学习第三篇if判断
查看>>
WPF INotifyPropertyChanged 通过特性减少代码量
查看>>
学习笔记41—ttest误区
查看>>
网络协议IPV6基础知识点集锦
查看>>
远程数据管理端开关
查看>>