luogu P1472 奶牛家谱 Cow Pedigrees

link : https://www.luogu.com.cn/problem/P1472

这题是用来智力康复的

这种题 这种题如果我没有一眼看出来我就把这个电脑屏幕💻吃掉
在这里插入图片描述
谢罪ing


考虑DP
直接求深度恰好为k的不好求
可以求深度<=k的,然后减一下
设 f [ i ] [ l e v ] 表 示 用 了 i 个 点 , 层 数 < = l e v 的 方 案 数 设f[i][lev]表示用了i个点,层数<=lev的方案数 f[i][lev]i,<=lev
枚举分给左子树j个节点然后
易 得 f [ i ] [ l e v ] = ∑ f [ j ] [ l e v − 1 ] ∗ f [ i − j − 1 ] [ l e v − 1 ] 易得f[i][lev]=\sum f[j][lev-1]*f[i-j-1][lev-1] f[i][lev]=f[j][lev1]f[ij1][lev1]
然后这题就没了
code:


#include<bits/stdc++.h>
#define mod 9901
using namespace std;
int n, k, f[505][505];
int main() {
	scanf("%d%d", &n, &k);
	for(int i = 1; i <= k; i ++) f[1][i] = 1;
	for(int lev = 2; lev <= k; lev ++) 
		for(int i = 3; i <= n; i += 2)
			for(int j = 1; j < i; j += 2)
				f[i][lev] += f[j][lev - 1] * f[i - j - 1][lev - 1] % mod, f[i][lev] %= mod;
	printf("%d", (f[n][k] - f[n][k - 1] + mod) % mod);
	return 0;
}
posted @ 2019-12-12 20:39  lahlah  阅读(18)  评论(0编辑  收藏  举报