UASCO Cow Pedigrees /// oj10140
2024-09-06 10:41:01
题目大意:
输入n,m ;二叉树
输出 n个点分为m层 的方案数; 每个点的分支要么是0要么是2
Sample Input
5 3
Sample Output
2
即 两个方案为
O O
/ \ / \
O O 和 O O
/ \ / \
O O O O
关于 dp[ i ][ j ] = dp[ i ][ j ] + dp[ i-1-k ][ j-1 ] * dp[ k ][ j-1 ]
可以这样理解,i 个点分为 j 层时
先取出一个点做根节点为第一层 剩下 i-1 个点则分为左右两大支
则此时 i-1 个点被分为两大支,且每支应分为 j-1 层
则 (i-1-k 分为 j-1 层的方案)*(k 分为 j-1 层的方案)= i 分为 j 层的方案
#include <bits/stdc++.h>
#define MOD 9901
using namespace std;
int dp[][];
int main() {
int n,m;
while(~scanf("%d%d",&n,&m))
{
memset(dp,,sizeof(dp));
for(int j=;j<=m;j++)
for(int i=;i<=n;i+=)
{
if(i==) dp[i][j]=;
for(int k=;k<=i-;k+=)
dp[i][j]=(dp[i][j]+dp[i--k][j-]*dp[k][j-])%MOD;
}
printf("%d\n",(dp[n][m]-dp[n][m-]+MOD)%MOD);
}
return ;
}
最新文章
- Docker容器时间与宿主机时间不一致的问题
- HDU5840 (分块+树链剖分)
- 使用MongoDB C#官方驱动操作MongoDB
- poj 3352
- iOS创建界面方法的讨论
- Hunt the Wumpus第二个版本---多怪兽,多洞穴,洞穴间双向互通
- CodeForces 669E Little Artem and Time Machine
- Vijos P1116 一元三次方程求解【多解,暴力,二分】
- 代码质量管理平台SonarQube的安装、配置与使用
- 基于html5 plus + Mui 移动App开发(三)-食全库
- mysql user表root 用户误删除解决方法
- Headless Service 和Service
- Android assets res 文件夹的区别
- 机器学习技法笔记:12 Neural Network
- RNA分析要点
- openvswitch datapath 内核态流表创建过程(ovs_flow_cmd_new)
- shell脚本批量部署ssh
- 洛谷 P2184 贪婪大陆 解题报告
- vue 在 html 中自定义 tag
- 使用PHP并发执行任务–curl_multi应用