https://atcoder.jp/contests/abc321/tasks/abc321_f
还真没见过这个套路,呜呜┭┮﹏┭┮
首先加就正常加,从后往前
但删的话应该是从前往后减
为什么呢?
先写一下自己的理解,加要从后往前加是为了防止加多次
减的话为了保证每个被删的数只减一次,应该从前往后。
考虑前
i
i
i 个已经被还原了,那么
i
+
1
i+1
i+1 个减去之前的一定不会删多次!
但如果从后往前,第
i
i
i 前去
i
−
x
i-x
i−x,
i
−
x
i-x
i−x 可能
全部叉掉,我现在想懂了
考虑原始没有压维的dp
d p i , j = d p i − 1 , j + d p i − 1 , j − k \Large dp_{i,j}=dp_{i-1,j}+dp_{i-1,j-k} dpi,j=dpi−1,j+dpi−1,j−k
我们现在要还原 d p i − 1 , j dp_{i-1,j} dpi−1,j,移项
d p i − 1 , j = d p i , j − d p i − 1 , j − k \Large dp_{i-1,j}=dp_{i,j}-dp_{i-1,j-k} dpi−1,j=dpi,j−dpi−1,j−k
看到了吧。我们要减的也必须是已经还原的。