题目大意
不想说。
DP
容易发现如果一颗树左偏次数达不到k-1,就合法。
不妨考虑按dfs序dp:
设f[i,j]表示当前是第i个叶子,从该点往上到根有j-1条左向边。
转移很容易。
良心自选题!
#include<cstdio>
#include<algorithm>
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
typedef long long ll;
const int maxn=5000+10,mo=998244353;
int f[maxn][maxn];
int i,j,k,l,t,n,m,ans;
int main(){
scanf("%d%d",&k,&n);
f[1][1]=1;
fo(i,1,n)
fo(j,1,k-1)
if (f[i][j]){
if (j>1) (f[i+1][j-1]+=f[i][j])%=mo;
(f[i][j+1]+=f[i][j])%=mo;
}
fo(i,1,n){
ans=f[i][1];
(ans+=mo)%=mo;
printf("%d\n",ans);
}
}