[ABC253E] Distance Sequence Solution

更好的阅读体验戳此进入

题面

给定 n,m,k,求有多少序列 an,满足:

Solution

一看题意和数据范围,DP 显然,不难想到设状态 dp(i,j) 为长度为 i 的以 j 为结尾的合法序列的方案数。也不难想到一个 2D1D 的转移,即:

dp(i,j)=k=j+kmdp(i1,k)+k=1jkdp(i1,k)

同时注意转移前需要判断是否满足 j+kmjk1。然后这个式子也很显然可以前缀和优化成 2D0D,最后复杂度也就是 O(nm) 的。然后滚动数组也可以压掉一维,不过没必要,空间开的下。

然后按照这个做完会发现 WA 了两个点,具体看一下就会发现,按照这个式子,如果 k=0,那么 dp(i1,j) 就会被加两次,所以此时还需要特判一下减去一个 dp(i1,j)

Code

UPD

update-2022_12_05 初稿