p1472 Cow Pedigrees】的更多相关文章

用dp[i][j]记录i个点,组成深度恰好为j的方案数.arr[i][j]记录i个点,深度<=j的方案数.那么dp[i][j]只有i为奇数时不为0.而arr[i][j]等于dp[i][j]的前缀和(i相同时).而dp[i][j],i为奇数有值,等于左子树分奇数个,右子树分奇数个的所有情况,并且左子 #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #i…
P1472 奶牛家谱 Cow Pedigrees 102通过 193提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 农民约翰准备购买一群新奶牛. 在这个新的奶牛群中, 每一个母亲奶牛都生两个小奶牛.这些奶牛间的关系可以用二叉树来表示.这些二叉树总共有N个节点(3 <= N < 200).这些二叉树有如下性质: 每一个节点的度是0或2.度是这个节点的孩子的数目. 树的高度等于K(1 < K < 100).高度是从…
Cow Pedigrees Silviu Ganceanu -- 2003 Farmer John is considering purchasing a new herd of cows. In this new herd, each mother cow gives birth to two children. The relationships among the cows can easily be represented by one or more binary trees with…
题意:问你指定二叉树有几种 1.高度为k 2.节点数为n 3.每个点的度为0或2 爆搜------->30分QAQ 首先,因为每个节点度为0或2, 所以如果n是偶数直接输出0就行了吧(嘿嘿) 如果是奇数呢? 设f[i][j]表示i个节点,高度$\le$j的方案数 那么$ans=f[n][k]-f[n][k-1]$(类似于前缀) 转移$f[i][j]=f[t][j-1]*f[i-t-1][j-1]$ 枚举t,t个放左边,j-t-1个放右边,乘法原理,别忘取模 #include<cstdio>…
题面 这道题我觉得是个不错的题: 根据题意可以较清晰的发现ans只和n和k有关:(因为输入的只有这两个数啊~): 那么设f[i][j]表示前i层用了j个节点的方案数,g[i][j]表示深度小于等于i并且用了j个节点的方案数总和: 对于一颗树,可以把它分成3部分:根节点,左字树,右子树: 对于一颗深度为i的树,左子树和右子树至少有一个达到了深度i-1: 所以转移方程是:f[i][j]+=f[i-1][k]*g[i-2][j-k-1]+f[i-1][j-k-1]*g[i-2][k]+f[i-1][k…
问n个结点深度为k且只有度为2或0的二叉树有多少种. dp[i][j]=dp[lk][ln]*dp[rk][j-1-ln],max(lk,rk)=i-1. http://train.usaco.org/usacoprob2?a=chObWjKZP9z&S=nocows /* TASK:nocows LANG:C++ */ #include<cstdio> #include<cstring> #include<algorithm> using namespace…
OJ:http://www.luogu.org/problem/show?pid=1472 #include<iostream> using namespace std; const int MOD=9901; const int maxn=200+5; const int maxk=100+5; int dp[maxn][maxk]; int v[maxn][maxk]; int N,K; void init(){ for(int i=0;i<maxn;i++) for(int j=0…
一道经典Dp. 定义dp[i][j] 表示由i个节点,j 层高度的累计方法数 状态转移方程为: 用i个点组成深度最多为j的二叉树的方法树等于组成左子树的方法数 乘于组成右子树的方法数再累计. & / \ @ # / \ @ @ 如图中 & 为顶点, @ 为左子树, # 为右子树 需要注意的是,左子树的节点数目同样也为奇数 然后遍历一遍从k = 1 到 i - 2, 考虑上一层所有的左/右子树方法数再作累加 最后输出答案的时候减去上一层累加数即可 /* ID: wushuai2 PROG:…
nocows解题报告------------------------------------------------------------------------------------------------------------------------------------------------[题目] 给你N个点,生成一棵K层的树,有s种情况.请输出s%9901的值. 要求很简单,每个点只能有0个或2个孩子.[数据范围] 3<=N<200 1<K<100[输入格式]…
令人窒息的奶牛题 题目描述 农民约翰准备购买一群新奶牛. 在这个新的奶牛群中, 每一个母亲奶牛都生两个小奶牛.这些奶牛间的关系可以用二叉树来表示.这些二叉树总共有N个节点(3 <= N < 200).这些二叉树有如下性质: 每一个节点的度是0或2.度是这个节点的孩子的数目. 树的高度等于K(1 < K < 100).高度是从根到最远的那个叶子所需要经过的结点数; 叶子是指没有孩子的节点. 有多少不同的家谱结构? 如果一个家谱的树结构不同于另一个的, 那么这两个家谱就是不同的.输出可…