建议HACK(洛谷复制一道题再进行HACK)
查看原帖
建议HACK(洛谷复制一道题再进行HACK)
743014
_H17_楼主2024/6/8 15:28

考虑 DP(状态代码中有)

// f[i][j] 表示 i 个点,高度小于 j 的树总数
#include<bits/stdc++.h>
#define int long long 
using namespace std;
int n,h,f[37][37];
signed main(){
    cin>>n>>h;
    for(int i=1;i<=n+1;i++)
    	f[0][i]=1;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n+1;j++){
            for(int k=0;k<i;k++)
	            f[i][j]+=f[k][j-1]*f[i-k-1][j-1];
        }
	}
    cout<<f[n][n+1]-f[n][h];
    return 0;
}

然而题目保证答案不超过 9×10189\times 10^{18} 并没有说 fn,n+1f_{n,n+1} 不会超过long long

2024/6/8 15:28
加载中...