[USACO Section 2.3] Cow Pedigrees (动态规划)
题目链接
Solution
我DP太菜啦...
考虑到一棵二叉树是由根节点以及左儿子和右儿子构成。
所以答案其实就是 左儿子方案数*右儿子方案数 。
状态定义:
\(f[i][j]\) 代表深度为 \(i\) ,节点个数为 \(j\) 的二叉树方案数。
转移方程:
对于每一个状态,节点总数已经确定。
那么枚举一维左子树的节点个数,右边用总数减去。
如果要构建一棵深度为 \(i\) 的二叉树,则两棵子树中必有一棵深度为 \(i-1\) 。
此时有三种情况:
- 左子树深度小于 \(i-1\),右子树深度为 \(i-1\)。
- 右子树深度小于 \(i-1\),左子树深度为 \(i-1\)。
- 两边子树深度均为 \(i-1\)。
由于我们需要的是深度小于 \(i-1\) 的所有情况,所以记录一个前缀和 \(sum\) 。
每一次要加上的便是 \(sum_{i-2}\) 。
然后参照以上做即可。
Code
#include<bits/stdc++.h>
using namespace std;
const int mod=9901;
int f[110][210],n,k,sum[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]+sum[i-2][p]*f[i-1][j-p-1])%mod;
f[i][j]=(f[i][j]+sum[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;
}
sum[i-1][j]=(sum[i-2][j]+f[i-1][j])%mod;
}
printf("%d\n", f[k][n]);
return 0;
}
[USACO Section 2.3] Cow Pedigrees (动态规划)的更多相关文章
- 【USACO 2.3】Cow Pedigrees(DP)
问n个结点深度为k且只有度为2或0的二叉树有多少种. dp[i][j]=dp[lk][ln]*dp[rk][j-1-ln],max(lk,rk)=i-1. http://train.usaco.org ...
- USACO 2.3 Cow Pedigrees
Cow Pedigrees Silviu Ganceanu -- 2003 Farmer John is considering purchasing a new herd of cows. In t ...
- 洛谷P1472 奶牛家谱 Cow Pedigrees
P1472 奶牛家谱 Cow Pedigrees 102通过 193提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 农民约翰准备 ...
- USACO 奶牛抗议 Generic Cow Protests
USACO 奶牛抗议 Generic Cow Protests Description 约翰家的N头奶牛聚集在一起,排成一列,正在进行一项抗议活动.第i头奶牛的理智度 为Ai,Ai可能是负数.约翰希望 ...
- USACO Section 2.3 奶牛家谱 Cow Pedigrees
OJ:http://www.luogu.org/problem/show?pid=1472 #include<iostream> using namespace std; const in ...
- USACO Cow Pedigrees 【Dp】
一道经典Dp. 定义dp[i][j] 表示由i个节点,j 层高度的累计方法数 状态转移方程为: 用i个点组成深度最多为j的二叉树的方法树等于组成左子树的方法数 乘于组成右子树的方法数再累计. & ...
- USACO Section2.3 Cow Pedigrees 解题报告 【icedream61】
nocows解题报告------------------------------------------------------------------------------------------ ...
- [USACO Section 5.3]量取牛奶 Milk Measuring (动态规划,背包$dp$)
题目链接 Solution 完全背包 \(dp\) , 同时再加一个数组 \(v[i][j]\) 记录当总和为\(j\) 时第 \(i\) 种物品是否被选. 为保证从小到大和字典序,先将瓶子按大小排序 ...
- [USACO Section 3.2] 01串 Stringsobits (动态规划)
题目链接 Solution 贼有意思的 DP, 也可以用组合数学做. \(f[i][j]\) 代表前 \(i\) 位,有 \(j\) 个 \(1\) 的方案数. 转移方程很简单 : \(f[i][j] ...
随机推荐
- 禁止MySQL开机自动启动的方法
这几天发现电脑卡机变慢了,还有一些卡,发现每次开机MySQL都会自动启动(明明我安装的时候选择了不开机自启,任务管理器启动列表中也没有,但就是自启了...) 1.打开服务列表 有两种方法,一是快捷键 ...
- python 基础之while无限循环
用户登录程序 username = "chenxi" passwed = "testki" counter = 0 while counter < 3: ...
- UML各种图总结
UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明.可视化.和编制文档的一种标准语言.下面将对UML的九种图+包图的基本概念进行介绍以及各 ...
- 使用HelpProvide组件调用帮助文件
实现效果: 知识运用: HelpProvider组件的HelpNameSpace属性 //于对象关联的帮助文件名 public virtual string HelpNameSpace {get; s ...
- CAD控件的鼠标事件(网页版)
_DMxDrawXEvents::MouseEvent CAD控件中的鼠标事件. 参数 说明 LONG lType 事件类型,1鼠标移动,2是鼠标左键按下,3是鼠标右键按下,4是鼠标左键双击 5是鼠标 ...
- 2018.3.16 win 关闭自动更新代码
新建一个文本文件修改后缀名为 .bat 格式 net stop wuauserv sc config wuauserv start=disabled shutdown -r -t 1
- 03_5_static关键字
03_5_static关键字 1. static关键字 在类中,用static声明的成员变量为静态成员变量,它为该类的公用 变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只 ...
- Nginx正向代理代理http和https服务
Nginx正向代理代理http和https服务 1. 背景需求 通过Nginx正向代理,去访问外网.可实现局域网不能访问外网的能力,以及防止在上网行为上,留下访问痕迹. 2. 安装配置 2.1安装 w ...
- Mybatis查询select 传单个参数不识别,找不到
今天, Mybatis查询select 传单个参数不识别,找不到 解决办法: 加上jdbc=varchar #{XXX,jdbc=VARCHAR}
- php使用curl访问https返回无结果的问题
最近在做一个微信自动登录,发起验证以后回调页面获取openid时 curl函数返回空. $appid = "appid appid "; $secret = "secre ...