首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
pedigrees专题
USACO Section 2.3 Cow Pedigrees
题意: N个节点 深度为K 的正则二叉树 求 树有几种形态 思路: 一开始以为是数学题… 看了byvoid的题解才知道是dp… 每棵树由根节点、左子树、右子树构成 由此得状态转移 树=左子树*右子树 节点数和深度是影响答案的属性 所以令dp[i][j]表示i个节点深度在j以内的树的形态数 深度在j以内的树又两个深度在j-1以内的树和一个根节点构成 设左子树k个节
阅读更多...
P1472 奶牛家谱 Cow Pedigrees(奇妙的状态定义)
农民约翰准备购买一群新奶牛。 在这个新的奶牛群中, 每一个母亲奶牛都生两个小奶牛。这些奶牛间的关系可以用二叉树来表示。这些二叉树总共有N个节点(3 <= N < 200)。这些二叉树有如下性质: 每一个节点的度是0或2。度是这个节点的孩子的数目。 树的高度等于K(1 < K < 100)。高度是从根到最远的那个叶子所需要经过的结点数; 叶子是指没有孩子的节点。 有多少不同的家谱结构? 如果一
阅读更多...
USACO-Section2.3 Cow Pedigrees【动态规划】
题目描述: 农民John准备购买一群新奶牛。 在这个新的奶牛群中, 每一个母亲奶牛都生两个小奶牛。这些奶牛间的关系可以用二叉树来表示。这些二叉树总共有N个节点(3 <= N < 200)。这些二叉树有如下性质: 每一个节点的度是0或2。度是这个节点的孩子的数目。 树的高度等于K(1 < K < 100)。高度是从根到最远的那个叶子所需要经过的结点数; 叶子是指没有孩子的节点。 有多少不同的
阅读更多...
usaco:Cow Pedigrees
dp原理: (1)dp[i][j] 表示 i 个节点建 <= j 层树的结果数。结果:res[n][k] = dp[n][k] - dp[n][k-1](res[i][j] 表示用 i 个节点建 j 层数的结果数); (2)dp[i][j] = E(dp[k][j - 1] * dp[i - k - 1][j - 1])(1 <= k <= i - 2)(E为求和); (3)注意(2)中k每
阅读更多...