第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 ...