zoukankan      html  css  js  c++  java
  • CF9D How many trees? (dp)

    这题我想了好久

    (f_{i,j})(i) 结点 (<=j) 的方案数

    固定根,枚举左右子树,就有:

    [f_{i,j}=sum_{k=0}^{n-1}f_{k,j-1}*f_{i-k-1,j-1} ]

    初始化 (f_{0,i}=1)

    答案 (ans=f_{n,n}-f_{n,h-1})

    Code

    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<cmath>
    #define N 40
    #define int long long
    using namespace std;
    inline int read() {
    	int x=0,f=1; char ch=getchar();
    	while(ch<'0' || ch>'9') { if(ch=='-') f=-1; ch=getchar(); }
    	while(ch>='0'&&ch<='9') { x=(x<<3)+(x<<1)+(ch^48); ch=getchar(); }
    	return x * f;
    }
    int n,h;
    int f[N][N];	//f[i][j] 表示 i个结点 高度为j 的方案总数 
    signed main()
    {
    	n = read(), h = read();
    	for(int i=0;i<=n;++i)
    		f[0][i] = 1;
    	for(int j=1;j<=n;++j)
    		for(int i=1;i<=n;++i)
    			for(int k=0;k<i;++k)
    				f[i][j] += f[k][j-1]*f[i-k-1][j-1];
    	cout<<f[n][n]-f[n][h-1]<<endl;
    	return 0;
    }
    
  • 相关阅读:
    LDD3 第7章 Time,Delays and Deferred Work
    4412 gpio读取pwm
    LDD快速参考
    4412 4路pwm输出
    PCB六层板学习(一)
    STM32 TIM3 PWM输出 4路
    4412 学习目录总结
    4412 Linux定时器
    4412 SPI驱动
    4412 i2c驱动
  • 原文地址:https://www.cnblogs.com/BaseAI/p/11741737.html
Copyright © 2011-2022 走看看