從字首和到組合數 2018多校題目知識點析取

2021-08-25 08:20:18 字數 1037 閱讀 9673

第i個位置上的數字變成了1,求整個陣列求k次字首和之後,j位置上的字首和

我們先把可能發生了什麼列出來

假設我們在位置i新增了w,現在要查詢j位置,現在一次字首和操作都沒有進行,矩陣的第一列代表i位置,最後一列代表j位置

$$ w00

0 w00

0$$

一開始肯定什麼都沒有發生,我們現在直接讓他加3次ww

www0

w2w3

w4w0

w3w6

w10w0

w4w10

w20w w00

0www

ww2w

3w4w

w3w6

w10ww

4w10w

20w

其實我們直接把w都去掉,發現只是乙個係數矩陣,好像還有點對稱???

我們接著可以發現,這個矩陣,就標記為a,滿足乙個性質 ai

j=ai

−1,j

+ai,

j−1 aij

=ai−

1,j+

ai,j

−1

可以理解為乙個矩陣的上的係數等於左邊加上頭上的係數。這個很好理解嘛,上邊的數相當於這個位置以前的值,左邊的數相當於是新的字首和。

但是,但是,但是。我們是不是可以將這個看成乙個dp陣列呢?看成dp陣列的話,從遞推式就是從矩陣左上角開始,只能朝右或者朝下走,有多少種走法。正好對應了這個式子。

這個路徑問題,我們就可以用組合數來求解了,我們就將目標轉移到矩陣的右下角ak

,j−i

a k,

j−

i,那麼走到這裡肯定走了k+

j−i k+j

−i

步,我們就從這裡面選出k步朝下走,剩下的就不用寫了,也就是說這個答案等於: (k

+j−i

k)( k+

j−ik

)oh yeah~問題解決了,只要把w乘上去,問題就變成了組合數問題了。

如果查詢的j在i前面?當然對答案沒有影響了。

之後更新那兩道題……

組合數問題(組合數公式轉換 字首和)

組合數的定義 給你n個數,從中取出m個數,共有 cn m中取法,cn m n m n m 重要公式 cnm cn 1 m cn 1 m 1 題目大意 資料有t組,給你n,m,k,問你對於所有的i 0,n j 0,min i,m 有多少對ci j可以整除k。t 1e4,n,m 2000 思路 暴力跑的...

牛客多校第十場D(字首和與組合數)

題意 長度為n的序列,初始都是0,維護3個操作 there are three types of operations 1.1 l r w,for each index i l,r change ai to ai w.2.2,change a to its prefix sum array.i.e....

P2822 組合數問題 巧用字首和

求的是c i,j 有多少個是k的倍數 首先,求組合數是有技巧的,用楊輝三角求組合數,爽的一批 但是,這樣只能得90分,兩個點t了 因為k是不變的,我們可以用字首和的思想求出每個點的答案 為了不超過整數範圍,我們可以 k include include include using namespace ...