可删除背包(计数类)=>转移数组进行展开:ABC321F

本文搬运自本人高中时期CSDN博客,若图片加载不出来,可到原文查看:https://blog.csdn.net/zhangtingxiqwq/article/details/133219375

https://atcoder.jp/contests/abc321/tasks/abc321_f

还真没见过这个套路,呜呜┭┮﹏┭┮

首先加就正常加,从后往前

但删的话应该是从前往后减

为什么呢?

先写一下自己的理解,加要从后往前加是为了防止加多次
减的话为了保证每个被删的数只减一次,应该从前往后。
考虑前 ii 个已经被还原了,那么 i+1i+1 个减去之前的一定不会删多次!
但如果从后往前,第 ii 前去 ixi-xixi-x 可能


全部叉掉,我现在想懂了

考虑原始没有压维的dp

dpi,j=dpi1,j+dpi1,jk\Large dp_{i,j}=dp_{i-1,j}+dp_{i-1,j-k}

我们现在要还原 dpi1,jdp_{i-1,j} ,移项

dpi1,j=dpi,jdpi1,jk\Large dp_{i-1,j}=dp_{i,j}-dp_{i-1,j-k}

看到了吧。我们要减的也必须是已经还原的。