不来也不去的一只失忆蝴蝶

曾迷途才怕追不上满街赶路人

[2017集训队作业自选题#153]Comb Avoiding Trees

题目大意

不想说。

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);
    }
}
阅读更多
版权声明:本文是蒟蒻写出来的,神犇转载也要说一声哦! https://blog.csdn.net/WerKeyTom_FTD/article/details/78529150
个人分类: 一般动规与递推
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

[2017集训队作业自选题#153]Comb Avoiding Trees

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭