我们设定dp[i][0/1]表示当前放了厚度为i的书,最后一本是白色还是黑色。那我们就可以推出和
答案就显而易见喽
不过代码是真的短
#include<bits/stdc++.h>
#define mod 998244353
using namespace std;
int l,h;
long long f[1000005][2],ans;
int main()
{
scanf("%d%d",&l,&h);
f[0][0]=1;
for(int i=1;i<=l;i++)
{
f[i][0]=f[i-1][1];
f[i][1]=f[i-1][0];
if(i>=h)
(f[i][1]+=f[i-h][0])%=mod;
(ans+=f[i][1])%=mod;
}
printf("%lld",ans);
}
来源:zr