从前缀和到组合数——2018多校题目知识点析取

问题引入:

第i个位置上的数字变成了1,求整个数组求k次前缀和之后,j位置上的前缀和

问题推导

我们先把可能发生了什么列出来
假设我们在位置i添加了w,现在要查询j位置,现在一次前缀和操作都没有进行,矩阵的第一列代表i位置,最后一列代表j位置
$$

w000 w 0 0 0

$$

一开始肯定什么都没有发生,我们现在直接让他加3次

wwwww0w2w3w4w0w3w6w10w0w4w10w20w w 0 0 0 w w w w w 2 w 3 w 4 w w 3 w 6 w 10 w w 4 w 10 w 20 w

其实我们直接把w都去掉,发现只是一个系数矩阵,好像还有点对称???
我们接着可以发现,这个矩阵,就标记为A,满足一个性质

Aij=Ai1,j+Ai,j1 A i j = A i − 1 , j + A i , j − 1

可以理解为一个矩阵的上的系数等于左边加上头上的系数。这个很好理解嘛,上边的数相当于这个位置以前的值,左边的数相当于是新的前缀和。

但是,但是,但是。我们是不是可以将这个看成一个DP数组呢?看成dp数组的话,从递推式就是从矩阵左上角开始,只能朝右或者朝下走,有多少种走法。正好对应了这个式子。
这个路径问题,我们就可以用组合数来求解了,我们就将目标转移到矩阵的右下角 Ak,ji A k , j − i ,那么走到这里肯定走了 k+ji k + j − i 步,我们就从这里面选出k步朝下走,剩下的就不用写了,也就是说这个答案等于:

(k+jik) ( k + j − i k )

Oh yeah~问题解决了,只要把w乘上去,问题就变成了组合数问题了。
如果查询的j在i前面?当然对答案没有影响了。

之后更新那两道题……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值