p1472 Cow Pedigrees
2024-09-30 14:38:24
用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>
#include <vector>
#include <iomanip>
#include <cstring>
#include <map>
#include <queue>
#include <set>
#include <cassert>
#include <stack>
#include <bitset>
#define mkp make_pair
using namespace std;
const double EPS=1e-;
typedef long long lon;
const lon SZ=,INF=0x7FFFFFFF,mod=;
int dp[][],arr[][]; int main()
{
std::ios::sync_with_stdio();
//freopen("d:\\1.txt","r",stdin);
lon casenum;
//cin>>casenum;
//for(lon time=1;time<=casenum;++time)
{
int n,k;
cin>>n>>k;
for(int i=;i<;++i)arr[][i]=;
dp[][]=;
for(int i=;i<=n;++i)
{
if(i&)
for(int j=;j<=k;++j)
{
for(int p=i-;p>=;p-=)
{
dp[i][j]+=*dp[p][j-]*arr[i--p][j-]%mod;
dp[i][j]-=dp[p][j-]*dp[i--p][j-];
}
dp[i][j]%=mod;
arr[i][j]=arr[i][j-]+dp[i][j];
arr[i][j]%=mod;
//if(i==3)cout<<j<<" "<<dp[i][j]<<endl;
}
}
cout<<(dp[n][k]+mod)%mod<<endl;
}
return ;
}
树必须为j-1深度,或者右子树必须为j-1深度,减去两者同为j-1深度。
最新文章
- 【hive】——metastore的三种模式
- jQuery cbpContentSlider 滑动切换
- php连接和操作mysql数据库
- iOS 初步单元测试
- python模块之codecs
- 图像二值化----otsu(最大类间方差法、大津算法)
- POJ 1159 Palindrome(LCS)
- php定界符 <;<;<; 的作用及使用注意事项
- mac下和windows下清空DNS缓存
- 一个Shell小脚本——旋转的斜杠
- [HDUOJ1312]Red And Black (经典的DFS)
- 利用BGP虚拟下一跳实现链路负载均衡
- 2018-2019-1 20189208《Linux内核原理与分析》第八周作业
- CentOS 搭建git服务
- pandas和re中正则表达式的意思
- English trip EM2-LP-4B At School Teacher:Russell
- Js代码一些要素
- python框架之Django(2)-简单的CRUD
- 思科、华为、H3C命令对照表
- 跨域问题-jsonp
热门文章
- 部署phpmyadmin登录不进去
- delete指针
- c# 之 System.Type.GetType()与Object.GetType()与typeof比较
- asp.net core mvc 中在C# 代码中写 js 或html 文本
- 题解——洛谷P1962 斐波那契数列(矩阵乘法)
- Java基础【基本数据类型包装类、int与String 之间的相互转换】
- Docker run 出现问题如何调试?
- 51nod 1215 数组的宽度(单调栈)
- web前端知识总结
- Python安装第三方库的安装技巧