思路:区间dp。
状态:dp[i][j]表示节点为i,高度小于等于j的方案数。
状态转移:dp[i][j]=∑dp[k][j-1]*dp[i-1-k][j-1]。
节点为i,高度等于j的方案数等于dp[i][j]-dp[i][j-1]。
代码:
#includeusing namespace std;#define ll long long#define pb push_back#define mp make_pair #define pi acos(-1.0)#define pii pair #define mem(a,b) mam(a,b,sizeof(a))const int MOD=9901;const int N=305;const int M=105;int dp[N][M];int main(){ ios::sync_with_stdio(false); cin.tie(0); int n,m; cin>>n>>m; for(int j=1;j