#DP#CF9D How many trees?
题目
用\(n\)个点组成二叉树,问高度\(\geq h\)的有多少个。
分析
首先前缀和相减就能得到答案,做dp
设\(dp[n][h]\)表示节点数为\(n\),高度不超过\(h\)的树的个数
那么\(dp[n][h]=\sum_{i=0}^{n-1}dp[i][h-1]*dp[n-i-1][h-1]\)
最后输出\(dp[n][n]-dp[n][h-1]\),初始值\(dp[0][0\sim n]=1\)
代码
#include <cstdio>
#define rr register
using namespace std;
int n,h; long long dp[41][41];
signed main(){
scanf("%d%d",&n,&h);
for (rr int i=0;i<=n;++i) dp[0][i]=1;
for (rr int i=1;i<=n;++i)
for (rr int j=1;j<=n;++j)
for (rr int k=0;k<j;++k)
dp[j][i]=dp[j][i]+dp[k][i-1]*dp[j-k-1][i-1];
return !printf("%lld",dp[n][n]-dp[n][h-1]);
}
#DP#CF9D How many trees?的更多相关文章
- CF9D How many trees? (dp)
这题我想了好久 设 \(f_{i,j}\) 为 \(i\) 结点 \(<=j\) 的方案数 固定根,枚举左右子树,就有: \[f_{i,j}=\sum_{k=0}^{n-1}f_{k,j-1}* ...
- CF9d How many trees?
题意:求节点数为n的,高度大于等于h的二叉树的个数. 题解: 一开始没看到二叉树的限制,,,想了好久.因为数据范围很小,所以可以考虑一些很暴力的做法. 有2种DP方式都可以过. 1,f[i][j]表示 ...
- [CF9D]How Many Trees?_动态规划_树形dp_ntt
How many trees? 题目链接:https://www.codeforces.com/contest/9/problem/D 数据范围:略. 题解: 水题. $f_{i,j}$表示$i$个节 ...
- LeetCode(五)
Minimum Depth of Binary Tree public class Solution { public int minDepth(TreeNode root) { if(root==n ...
- 【DP】【CF9D】 How many trees?
传送门 Description 给你两个正整数\(n,h\),求由\(n\)个点组成的高度大于等于\(h\)的二叉树有多少个 Input 一行两个整数\(n,h\) Output 一个整数代表答案. ...
- Codeforces Round #369 (Div. 2)---C - Coloring Trees (很妙的DP题)
题目链接 http://codeforces.com/contest/711/problem/C Description ZS the Coder and Chris the Baboon has a ...
- HDU 1693 Eat the Trees(插头DP、棋盘哈密顿回路数)+ URAL 1519 Formula 1(插头DP、棋盘哈密顿单回路数)
插头DP基础题的样子...输入N,M<=11,以及N*M的01矩阵,0(1)表示有(无)障碍物.输出哈密顿回路(可以多回路)方案数... 看了个ppt,画了下图...感觉还是挺有效的... 参考 ...
- Codeforces Round #369 (Div. 2) C. Coloring Trees DP
C. Coloring Trees ZS the Coder and Chris the Baboon has arrived at Udayland! They walked in the pa ...
- HDU 1693 Eat the Trees(插头DP)
题目链接 USACO 第6章,第一题是一个插头DP,无奈啊.从头看起,看了好久的陈丹琦的论文,表示木看懂... 大体知道思路之后,还是无法实现代码.. 此题是插头DP最最简单的一个,在一个n*m的棋盘 ...
- CodeForces #369 C. Coloring Trees DP
题目链接:C. Coloring Trees 题意:给出n棵树的颜色,有些树被染了,有些没有.现在让你把没被染色的树染色.使得beauty = k.问,最少使用的颜料是多少. K:连续的颜色为一组 ...
随机推荐
- leetcode - 相同的树
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同. 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的. 示例 1: 输入:p = [1,2,3], q = [1 ...
- 一个自定义可扩展的检测变量的函数typeofIt();
自定义方法typeofIt()是用来判断传入的变量或属性是什么类型的; 1.如果是基础类型变量则返回代表基础变量类型小写格式的字符串及一些简易说明; 2.如果是对象类型变量则返回结尾带有"O ...
- sql判断字符串中含中文方法
基于UTF-8字符集 它是一种多字节字符集,编码为变长编码.那么它的编码范围根据:http://www.iteye.com/topic/977671 作者提供的资料学习,整理出它编码范围如下: u2e ...
- 【Azure 事件中心】Event Hubs中存在非常多的错误数据,是否能提前删除这些数据呢?
问题描述 因为一些特殊原因,Event Hub 里面堆积了很多不需要的数据事件,正常要等事件中的过期时间到后才有Event Hub自动删除掉,但希望能够尽快马上删除,有没有什么手动的方法吗? 问题解答 ...
- 【Azure 存储服务】ADLS Gen 2 Backup/软删除/Version管理/快照等功能参考资料
问题描述 ADLS Gen 2 存储的备份,软删除和version管理, 快照等功能应该怎么启用? 问题回答 存储的备份 测试显示 Premium 定价层 的 ADLS Gen 2 在中国区Azure ...
- C语言初学习——易错点合集(长篇)
转义字符 例题一 int main() { char s[] = "012xy\08s34f4w2"; int i, n = 0; for (i = 0; s[i] != 0; i ...
- Java 线程安全问题 使用同步机制讲单例模式中的懒汉式改写为线程安全的
1 package bytezero.deadlock; 2 3 /** 4 * 使用同步机制讲单例模式中的懒汉式改写为线程安全的 5 * 6 * 7 * 8 * 9 * @author Byteze ...
- 在anaconda中为jupyter安装代码自动补全或代码自动提示功能,jupyter nbextensions不显示拓展,另附格式化代码插件的安装方法
操作步骤 进入命令行环境.我使用的是conda.有两种方式进入命令行. 方法1:通过anconda navigator界面,选择environments,选择对应环境名,选择open terminal ...
- js收藏网页功能,纠正网上乱转没求证的案例
网站一般流行以下收藏代码 function AddFavorite(title, url){ try{ //ie收藏 window.external.addFavorite(url, title); ...
- Mybatis分页插件有效范围
一.问题由来 在修改了一段代码后,将修改后的功能放在测试环境简单测试后,发现没有任何问题,因为测试环境数据量非常少(10条以下),因此 也就没有怀疑修改的代码存在问题,直接上生产环境,测试的时候发现后 ...