usaco-Cow Pedigrees

2023-11-11

题意:

求出n个节点可以构成多少种高为h的二叉树。
分析:

设左子树节点数x,右子树节点数为n-x-1,函数dp表示满足条件的树的个数,则dp(n)=dp(x)*(n-x-1)。

对于未知数h,dp[n]=∑dp[x]*dp[n-x-1],(x<=n-2,x in [1,3,5,…])。

故设dp[i][j]表示高不大于i,节点数为j的子树个数。易得状态转移方程为:dp[i][j]=∑dp[i-1][k]*dp[i-1][j-k-1],(k in [1,3,5,…,j-2]),其中,边界条件:dp[i][1]=1,显然结果为dp[h][n]-dp[h-1][n]。

#include <iostream>
#include <string>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#define range(i,a,b) for(int i=a;i<=b;++i)
#define LL long long
#define rerange(i,a,b) for(int i=a;i>=b;--i)
#define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
using namespace std;
int n,h,dp[205][205];
void init(){
    cin>>n>>h;
    fill(dp,0);
    range(i,1,h)dp[i][1]=1;
}
void solve(){
    range(i,1,h)
        range(j,3,n) {
            range(k, 1, j - 2) {
                dp[i][j]=(dp[i][j]+dp[i-1][k]*dp[i-1][j-k-1]%9901)%9901;
                ++k;
            }
            ++j;
        }
    cout<<(dp[h][n]-dp[h-1][n]+9901)%9901<<endl;
}
int main() {
    init();
    solve();
    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/Rhythm-/p/9322799.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

usaco-Cow Pedigrees 的相关文章

  • 数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)

    原文 http blog csdn net sup heaven article details 39313731 数据结构中常见的树 BST二叉搜索树 AVL平衡二叉树 RBT红黑树 B 树 B 树 B 树 转载 2014年09月16日
  • BP神经网络与Python实现

    人工神经网络是一种经典的机器学习模型 随着深度学习的发展神经网络模型日益完善 联想大家熟悉的回归问题 神经网络模型实际上是根据训练样本创造出一个多维输入多维输出的函数 并使用该函数进行预测 网络的训练过程即为调节该函数参数提高预测精度的过程
  • LeetCode83: 删除排序链表中的重复元素

    给定一个已排序的链表的头 head 删除所有重复的元素 使每个元素只出现一次 返回 已排序的链表 示例 1 输入 head 1 1 2 输出 1 2 示例 2 输入 head 1 1 2 3 3 输出 1 2 3 提示 链表中节点数目在范围
  • 数据结构之链表与线性表

    数据结构之链表与线性表 线性表 顺序线性表 顺序表 顺序线性表 使用数组实现 一组地址连续的存储单元 数组大小有两种方式指定 一是静态分配 二是动态扩展 优点 随机访问特性 查找O 1 时间 存储密度高 逻辑上相邻的元素 物理上也相邻 缺点
  • 数据结构----链式栈

    目录 前言 链式栈 操作方式 1 存储结构 2 初始化 3 创建节点 4 判断是否满栈 5 判断是否空栈 6 入栈 7 出栈 8 获取栈顶元素 9 遍历栈 10 清空栈 完整代码 前言 前面我们学习过了数组栈的相关方法 链接 线性表 栈 栈
  • 逆波兰表达式求值(C语言实现)

    实验项目 从文本文件输入任意一个语法正确的 中缀 表达式 显示并保存该表达式 利用栈结构 把上述 中缀 表达式转换成后缀表达式 并显示栈的状态变化过程和所得到的后缀表达式 利用栈结构 对上述后缀表达式进行求值 并显示栈的状态变化过程和最终结
  • 数据结构与算法学习总结(六)——字符串的模式匹配算法

    基本概念 字符串是一种特殊的线性表 即元素都是 字符 的线性表 字符是组成字符串的基本单位 字符的取值依赖于字符集 例如二进制的字符集为0 1 则取值只能为 0 1 再比如英语语言 则包括26个字母外加标点符号 例如 abcde 就是一个字
  • 手把手教你实现一个向量

    文章目录 什么是向量 向量提供哪些接口 实现 宏定义 定义类 成员变量 构造函数与析构函数 构造函数 析构函数 成员函数 size get r put r e expand insert r e remove lo hi remove r
  • 循环单链表(C语言版)

    前言 小可爱们 本次一起来看看循环单链表吧 嘻嘻 一 循环单链表的定义 循环单链表是单链表的另一种形式 其结构特点链表中最后一个结点的指针域不再是结束标记 而是指向整个链表的第一个结点 从而使链表形成一个环 和单链表相同 循环链表也有带头结
  • 数据结构小白之插入排序算法

    1 插入排序 1 1 思路 将n个需要排序的元素看成两个部分 一个是有序部分 一个是无序部分 开始的时候有序表只有一个元素 无序表有n 1个元素 排序过程中每次从无序表中取出元素 然后插入到有序表的适当位置 从而成为新的有序表 类似排队 如
  • 『Python基础-15』递归函数 Recursion Function

    什么是递归函数 一种计算过程 如果其中每一步都要用到前一步或前几步的结果 称为递归的 用递归过程定义的函数 称为递归函数 例如连加 连乘及阶乘等 凡是递归的函数 都是可计算的 即能行的 递归就是一个函数在它的函数体内调用它自身 编程语言中的
  • 数据结构之图的两种遍历实现(C语言版)

    上一期文章分享完了图的两种遍历方式 也是两种很重要的算法 DFS和BFS 这两种算法的应用和重要性我就不多说了 内行的人懂的都懂 今天这文章重要就是来上机实现这两种算法 又由于这两种算法都可以由邻接矩阵和邻接表来表示 博主分享的代码都是上机
  • 数据结构——计算节点个数和二叉树高度(C语言版)

    摘自 数据结构 计算节点个数和二叉树高度 C语言版 作者 正弦定理 发布时间 2020 12 12 23 27 09 网址 https blog csdn net chinesekobe article details 111086664
  • 堆栈01--用两个栈实现队列

    堆栈01 用两个栈实现队列 jz05 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 用两个栈来实现一个队列 完成队列的Push和Pop操作 队列中的元素为int类型 测试用例 队列先进先出 输入 1 2 输出 1 2 解析
  • 浮生六记

    浮生六记 目录 浮生六记卷一 闺房记乐 002 浮生六记卷二 闲情记趣 015 浮生六记卷三 坎坷记愁 022 浮生六记卷四 浪游记快 034 浮生六记 2 浮生六记卷一 闺房记乐 余生乾隆癸未冬十一月二十有二日 正值太平盛世 且在 衣冠之
  • 【试题】排列组合

    在写一个远程的代码 如果本地有M个显示器 远程有N个显示器 M lt N 依据分辨率 显示器刷新频率等要求 需要对远程的N个显示器进行最佳分辨率修改 之后 需要从N个远程显示器中选择M个 跟本地显示器进行一对一的匹配 即从 A N M N
  • 查找数组中第二大的数

    快速找出一个数组中的最大数 第二大数 思路 如果当 前元素大于最大数 max 则让第二大数等于原来的最大数 max 再把当前元素的值赋给 max 如果当前的元素大于等于第二大数secondMax的值而小于最大数max的值 则要把当前元素的值
  • C++ AVL树(四种旋转,插入)

    C AVL树 四种旋转 插入 一 AVL树的概念及性质 二 我们要实现的大致框架 1 AVL树的节点定义 2 AVL树的大致框架 三 插入 1 插入逻辑跟BST相同的那一部分 2 修改平衡因子
  • 排序:计数排序

    一 概念 计数排序是非比较排序 是对哈希直接定址法的变形应用 二 思想 利用数组统计相同数据出现的次数 例如整型数据m出现n次 就在数组m位置记录数据为n 最后从头遍历数组打印数据即可 通俗来讲就是 数组下标即为数据 下标所指位置的值即为数
  • 最大流-Dinic算法,原理详解,四大优化,详细代码

    文章目录 零 前言 一 概念回顾 可略过 1 1流网络 1 2流 1 3最大流 1 4残留网络 1 5增广路

随机推荐

  • 在Java中使用redisTemplate操作缓存

    在最近的项目中 有一个需求是对一个很大的数据库进行查询 数据量大概在几千万条 但同时对查询速度的要求也比较高 这个数据库之前在没有使用Presto的情况下 使用的是Hive 使用Hive进行一个简单的查询 速度可能在几分钟 当然几分钟也并不
  • linux下定位内存泄漏 /proc/pid/status 解释

    内存泄漏一直是程序定位的盲点 很多时候感觉用着用着内存会越来越少 导致程序崩溃 而一般top等linux命令又不够详细 通过cat proc pid status 命令 可详细查看进程的内存占用情况 其中pid是进程id 进程号去查状态 c
  • Java:线程的三种中断方式

    文章目录 前言 一 线程的Stop 操作 二 线程的Interrupt 方法进行中断操作 1 stop 方法的缺点 2 Interrupt 方法 三 使用run标志位进行判断 总结 前言 在 Java 中 并发机制非常重要 但并不是所有程序
  • 分库分表的概念

    目录 一 分库分表有什么用 二 分库分表的方式 三 分库分表的缺点 四 什么时候需要分库分表 五 常见的分库分表组件 总结 在前面写了一篇关于MySQL主从集群的文章 而主从的作用 在我们开发角度更大的作用是作为读写分离的支持 也是学习Sh
  • Debian系统下network和NetworkManager冲突及关闭NetworkManager

    在Debian Linux下 network服务管理对于网卡的配置 NetworkManager是由管理系统网络链接的服务和允许用户管理网络连接的客户端服务组成 network和NetworkManager服务会出现冲突 一般如果想另外使用
  • [前端系列第7弹]Vue:一个渐进式的 JavaScript 框架

    Vue 是一个用于构建用户界面的 JavaScript 框架 它具有以下特点 渐进式 Vue 可以根据不同的使用场景 灵活地选择使用库或者框架的方式 从而实现渐进式的开发 响应式 Vue 通过数据绑定和虚拟 DOM 技术 实现了高效的响应式
  • ajax数字的正则表达式,validateform正则表达式 datatype验证数字

    第8章 用户模式下的线程同步 4 lowbar 条件变量 Condition Variable 8 6 条件变量 Condition Variables 可利用临界区或SRWLock锁来实现 8 6 1 条件变量的使用 1 条件变量机制就是
  • BigDecimal转化为String

    Oracle Java字段类型转换 从数据库取出一个字段 在java中为BigDecimal类型 将其转化为String类型的字段时 报转化异常的错误java math BigDecimal cannot be cast to java l
  • Spring面试题整理

    Spring的优缺点是什么 优点 1 方便解耦 简化开发 Spring就是一个大工厂 可以将所有对象的创建和依赖关系的维护 交给Spring管理 2 AOP编程的支持 Spring提供面向切面编程 可以方便的实现对程序进行权限拦截 运行监控
  • WRF系列教程1:WRF如何得到更好的模拟结果?

    编者按 这是新开的一个系列 有时间会逐步将WRF官方培训的ppt挑选个人认为重要的进行翻译 以及结合个人的使用经验进行一些解释 由于个人水平有限 难免会出现偏差和错误 欢迎斧正 本篇内容来源于WRF官网2021年的培训ppt Applica
  • 如何用frp做内网穿透

    使用场景 需要将内网的一些应用端口开放出来 以便可以通过外网访问或者第三方调试使用 采用工具 frp 0 28 0 linux amd64 tar gz 工具下载地址 https github com fatedier frp releas
  • element 实现表格滚动vue-seamless-scroll --save

    npm install vue seamless scroll save main js import scroll from vue seamless scroll Vue use scroll
  • 服务器扩容 --挂载磁盘方式(学习笔记)

    一 查看服务器磁盘 df h fdisk l 可以看到新增加了一块硬盘 dev sdb 大概有4T的容量 二 挂载磁盘 1 进行磁盘分区 fdisk dev sdb sdb为新加磁盘名称 步骤如下 2 查看新建分区 fdisk l 3 对新
  • create connection SQLException, url: jdbc:mysql://localhost:3306/users?characterEncoding=utf-8, erro

    今天写JDBCTemplate的时候出现bug 一开始网上查的时候说可能是驱动版本和数据库版本不太对 但是后来手写连接用DriverManager获取连接是可以获取得到的 然后又用Druid连接池试了一下 也可以获取连接 所以排除这个问题
  • BP脑电数据处理

    BP Brain Products 脑电数据处理 一 BP分析软件导出数据 标签 1 1 BP分析软件加载原始数据 1 2导出Markers 1 3 将原始数据导出成edf格式输出 1 4 MATLAB处理 一 BP分析软件导出数据 标签
  • [机缘参悟-92]:《本质思考》- 本质思考的9种训练方法

    目录 前言 01 假设力 尽可能涵盖所有的可能方案 02 逆向思考力 从未来可能的失败倒推 03 共情力 不断地站在他人的角度看问题 04 信息整理力 辨别每种信息的类型和属性和背后意图 05 图像化能力 掌握更直观的表达方式 06 定规则
  • 电子电路图中VCC、IO、3V3OUT、VDD3V3解释

    1 Vcc 一般表示电源正端 是晶体管集电极或IC集电极供电电压 2 IO 输入 输出端口 3 3V3OUT 3 3V输出端 4 VDD 一般表示电源正端 是场效应管漏极或IC内漏极供电电压 5 3V3 3 3V端 一般是供电电压为3 3V
  • 【Django缓存实现】前端缓存和后端缓存

    目录 一 什么是缓存 二 Web缓存 一 前端缓存 二 后端缓存 三 Django缓存 一 缓存类型 二 设置缓存 1 Memcached 2 Redis 3 数据库缓存 4 文件系统缓存 5 本地内存缓存 6 虚拟缓存 用于开发模式 7
  • Windows 环境配置Github 的SSH key

    今天需要将本机编写的代码提交至github 上 但是push 远程分支提示如下错误信 remote Support for password authentication was removed on August 13 2021 Plea
  • usaco-Cow Pedigrees

    题意 求出n个节点可以构成多少种高为h的二叉树 分析 设左子树节点数x 右子树节点数为n x 1 函数dp表示满足条件的树的个数 则dp n dp x n x 1 对于未知数h dp n dp x dp n x 1 x lt n 2 x i